我正在为我的Android应用程序创建一个服务,通过意图(Intent)向服务提供数据。问题是当系统销毁服务时,提供给服务的意图数据无法恢复,导致我的应用程序崩溃。
我听说 START_REDELIVER_INTENT
会在有足够内存可用时重新启动我的服务,并恢复提供给服务的意图数据,而 START_STICKY
不会恢复意图数据。
我是对的吗?还是我有什么不知道的地方?
此外,我的服务在被系统销毁后重新启动需要很长时间。
我正在为我的Android应用程序创建一个服务,通过意图(Intent)向服务提供数据。问题是当系统销毁服务时,提供给服务的意图数据无法恢复,导致我的应用程序崩溃。
我听说 START_REDELIVER_INTENT
会在有足够内存可用时重新启动我的服务,并恢复提供给服务的意图数据,而 START_STICKY
不会恢复意图数据。
我是对的吗?还是我有什么不知道的地方?
此外,我的服务在被系统销毁后重新启动需要很长时间。
START_STICKY- 这将告诉系统,在可用内存足够的情况下创建服务的最新副本,并在从低内存中恢复状态后保留状态。在这个过程中,我们将会失去之前可能已经计算出来的结果。
START_REDELIVER_INTENT- 这将告诉系统在服务崩溃后重新启动并恢复服务,并重新传递在崩溃发生时存在的意图。
此外,我们还可以简要介绍一下START_NOT_STICKY
START_NOT_STICKY- 这将告诉系统不用担心重启服务,即使有足够的可用内存。
请访问以下网址了解更多信息:
http://developer.android.com/reference/android/app/Service.html
stopSelf()
或stopService()
来销毁服务,否则即使它没有运行,它的实例仍将在内存中保持活动状态。 - CopsOnRoad