Android 从“最近使用的应用”列表中删除应用时,会调用哪些生命周期事件?
据我从和中了解,当我的应用程序从最近的应用程序列表中删除时,仅调用了Android 从“最近使用的应用”列表中删除应用时,会调用哪些生命周期事件?,android,android-service,android-lifecycle,Android,Android Service,Android Lifecycle,据我从和中了解,当我的应用程序从最近的应用程序列表中删除时,仅调用了onDestroy() 在我的应用程序中,我有一个单一的活动,可以启动一个播放音乐的服务。在活动的onDestroy()中,甚至没有提到该服务,但当我的应用程序从列表中删除时,仍然会引发一个非法参数异常,指向所述服务: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, p
onDestroy()
在我的应用程序中,我有一个单一的活动,可以启动一个播放音乐的服务。在活动的onDestroy()
中,甚至没有提到该服务,但当我的应用程序从列表中删除时,仍然会引发一个非法参数异常,指向所述服务:
Parameter specified as non-null is null:
method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter intent
at com.example.soulfetch2.BordunService.onStartCommand(BordunService.kt)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3468)`
正如在ondestory()
中一样,甚至没有提到该服务,必须有其他东西试图访问该服务,但该服务已不存在。知道会是什么吗
如果同时调用了
onPause()
和/或onStop()
,是否有办法将删除案例与调用这两个案例的其他案例区分开来?当您打开最近调用的应用程序onPause
和onStop
时,因此,当您的活动被刷走时,生命周期中只剩下onDestroy
对于例外情况,onStartCommand方法应具有以下签名
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int) : Int
按照
如果服务在其进程之后重新启动,则该值可能为null
已经走了,它以前除了
启动粘性兼容性
当您打开最近的应用程序时,会调用暂停和停止,因此当您的活动被刷走时,生命周期中只剩下onDestroy 对于例外情况,onStartCommand方法应具有以下签名
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int) : Int
按照
如果服务在其进程之后重新启动,则该值可能为null
已经走了,它以前除了
启动粘性兼容性
在onDestroy()中,甚至没有提到服务,必须有
试图访问不存在的服务的其他内容
不再知道会是什么吗
在某些手机中,当该应用程序从最近的应用程序中删除时,就像进入设置并强制关闭应用程序一样。因此,它会关闭与该应用程序相关的所有服务。这就是为什么你要面对这样的问题
如果还调用了onPause()和/或onStop(),是否有方法
将移除案例与这两种情况下的其他案例区分开来
你叫什么名字
据我所知,没有办法区分拆迁案件
但当我的应用程序运行时,仍然会引发非法参数异常
从列表中删除
为了解决这个问题,你可以看看Ge3ng发布的内容。它会解决你的问题
在onDestroy()中,甚至没有提到服务,必须有
试图访问不存在的服务的其他内容
不再知道会是什么吗
在某些手机中,当该应用程序从最近的应用程序中删除时,就像进入设置并强制关闭应用程序一样。因此,它会关闭与该应用程序相关的所有服务。这就是为什么你要面对这样的问题
如果还调用了onPause()和/或onStop(),是否有方法
将移除案例与这两种情况下的其他案例区分开来
你叫什么名字
据我所知,没有办法区分拆迁案件
但当我的应用程序运行时,仍然会引发非法参数异常
从列表中删除
为了解决这个问题,你可以看看Ge3ng发布的内容。它将解决您的问题。您有一个
服务
,它从onStartCommand()
返回START\u STICKY
。当您从“最近的任务”列表中滑动任务时,Android会终止承载您的活动和服务的操作系统进程
既然你告诉安卓(通过START\u STICKY
)你希望你的服务
在安卓杀死它的情况下重新启动,安卓同意你的请求并重新启动你的服务
。当它执行此操作时,它使用null
Intent
调用onStartCommand()
注意:我假设在您的活动中根本没有调用onDestroy()
。您可以将日志添加到onDestroy()
以查看这是否正确。您有一个服务
,它从onStartCommand()
返回START
。当您从“最近的任务”列表中滑动任务时,Android会终止承载您的活动和服务的操作系统进程
既然你告诉安卓(通过START\u STICKY
)你希望你的服务
在安卓杀死它的情况下重新启动,安卓同意你的请求并重新启动你的服务
。当它执行此操作时,它使用null
Intent
调用onStartCommand()
注意:我假设在您的活动中根本没有调用onDestroy()
。您可以将日志添加到onDestroy()
以查看这是否正确。如果我这样做,如何使用附加功能?如果我在签名中使intent为空,我会遇到问题:If(intent.hasExtra(“Play”)
给我“仅允许”?。或!!”。对于if(intent?.hasExtra(“Play”)
我得到一个类型不匹配(预期intent
,发现intent?
),对于if(intent!!.hasExtra(“Play”)
我得到一个null指针异常,而不是非法参数。您必须处理null。如果意图为空,您可以提前返回,即intent?:return Service.START\u NOT\u STICKY
您还应该查看传入的标志,因为它们将表示正在进行的操作。如果我这样做,我如何使用附加功能?如果我在签名中使intent为空,我会遇到问题:If(intent.hasExtra(“Play”)
给我“仅允许”?。或!!”。对于if(intent?.hasExtra(“Play”)
我得到一个类型不匹配(预期intent
,找到intent?
),对于if(intent!!.hasExtra(“Play”)
我得到一个空指针异常指令