我有一个与 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world"/>
</RelativeLayout>
的生命周期有关的问题。从文档中,我发现JobIntentService
返回后就立即销毁了JobIntentService
。 onHandleWork(Intent intent)
在后台运行,因此我可以在此处运行阻止操作。然后,如果我想异步运行实际的执行该怎么办?我似乎一切都按预期运行,但是很难理解即使调用onHandleWork
后该服务仍在后台运行。以下是我对onDestroy
的实现。
onHandleWork
当服务实际上被“销毁”时,它如何在后台实际运行?
答案 0 :(得分:0)
onHandleWork
方法执行您的逻辑,如果您的逻辑启动异步任务,JobIntentService
会告诉自己您给它的任务已执行(给您的任务是执行一个异步任务SIMPLY)因此您会立即收到onDestroy()
如果onHandleWork
直接执行您的逻辑(包括一个较长的过程),那么一旦过程完成,onDestroy()
将被调用
要完全了解它们之间的区别,您需要知道onHandleWork
方法会简单地执行您的逻辑。
示例:
1-onHandleWork
-> Asynctask.execute()
-> onDestroy()
2-{{1}}-> for循环-> onHandleWork
在(1-)上,您告诉onDestroy()
方法执行一个异步任务,但不继续跟踪该过程的进度,onHandleWork
执行onHandlework
(这只需要几毫秒)
在(2-)上,您告诉.execute()
方法执行循环,该循环阻止onHandleWork
的调用,直到循环结束。