【发布时间】:2015-03-24 03:05:21
【问题描述】:
我在哪里可以找到 android 中的主循环或如何实现它? 例如,如果我想在每次运行活动时增加 x 并测试 x 是否超过一个值,那么当没有主循环时我该怎么做?
【问题讨论】:
-
主循环是什么意思?
-
就像一个游戏循环......它在一个活动中一直执行,而不像 onCreate 只执行一次
我在哪里可以找到 android 中的主循环或如何实现它? 例如,如果我想在每次运行活动时增加 x 并测试 x 是否超过一个值,那么当没有主循环时我该怎么做?
【问题讨论】:
android 中没有主循环,但每次打开活动时,它都会抛出 on create,您可以这样做,每次调用 onCreate 时都会增加一个计数器,以获取有关活动生命周期的更多信息,请查看此处Android Activity
【讨论】:
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”是否超过此线程中的值。
【讨论】:
主线程运行一个Looper,它是一个事件调度程序(可能您所说的“主循环”)。 Looper 负责调度事件和运行小块代码。您不能每次都进入Looper,但您可以将小块代码发布到Looper 以执行,并且您可以安排代码在特定时间运行。为此,您创建一个Handler,然后使用post()、postAtTime() 或postDelayed() 方法。您还可以通过将“消息”发布到Handler,将您自己的“事件”排队到Looper。如果这样做,则需要提供在消息发送后实际对消息执行某些操作的代码。
请注意,主线程上的Looper 还会调度所有生命周期事件(如onCreate()、onResume() 等)和所有 UI 处理,因此您不能有任何长时间- 在它上面运行操作,否则你的 UI 会很慢而且很慢,Android 可能会因为无响应而杀死你的应用程序。如果您需要长时间运行的操作,则需要使用单独的后台线程(查看Service、AsyncTask 或创建自己的Thread。
【讨论】: