【问题标题】:Main Loop in Android ActivityAndroid Activity 中的主循环
【发布时间】:2015-03-24 03:05:21
【问题描述】:

我在哪里可以找到 android 中的主循环或如何实现它? 例如,如果我想在每次运行活动时增加 x 并测试 x 是否超过一个值,那么当没有主循环时我该怎么做?

【问题讨论】:

标签: android android-activity


【解决方案1】:

android 中没有主循环,但每次打开活动时,它都会抛出 on create,您可以这样做,每次调用 onCreate 时都会增加一个计数器,以获取有关活动生命周期的更多信息,请查看此处Android Activity

【讨论】:

    【解决方案2】:

    Android 应用中的 Activity 用于提供用户界面。用户使用 Activity 与按钮、复选框、编辑字段等内容进行交互以与应用交互。

    A Service is an application component that can perform long-running 
    operations in the background and does not provide a user interface
    

    您可能需要一个“服务”,它不应该有 UI,并且是为了执行 App 的后台工作而创建的。 例如:在音乐应用的后台播放歌曲。

    在您的情况下,您应该创建一个服务,使用一个单独的线程来完成增值工作。检查“x”是否超过此线程中的值。

    【讨论】:

    • 谢谢!我会调查的:)
    【解决方案3】:

    主线程运行一个Looper,它是一个事件调度程序(可能您所说的“主循环”)。 Looper 负责调度事件和运行小块代码。您不能每次都进入Looper,但您可以将小块代码发布到Looper 以执行,并且您可以安排代码在特定时间运行。为此,您创建一个Handler,然后使用post()postAtTime()postDelayed() 方法。您还可以通过将“消息”发布到Handler,将您自己的“事件”排队到Looper。如果这样做,则需要提供在消息发送后实际对消息执行某些操作的代码。

    请注意,主线程上的Looper 还会调度所有生命周期事件(如onCreate()onResume() 等)和所有 UI 处理,因此您不能有任何长时间- 在它上面运行操作,否则你的 UI 会很慢而且很慢,Android 可能会因为无响应而杀死你的应用程序。如果您需要长时间运行的操作,则需要使用单独的后台线程(查看ServiceAsyncTask 或创建自己的Thread

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      相关资源
      最近更新 更多