1

我创建了一个应用程序,其服务作为我的应用程序的后台线程运行。由于内存不足,Andrdoid 有时会杀死一些应用程序。其中一个已被杀死的应用程序是我的应用程序:

07-29 14:48:35.140 I/ActivityManager(145): 进程 test.myApp (pid 4847) 已经死亡。

07-29 14:48:35.140 W/ActivityManager(145):计划在 19600 毫秒内重新启动崩溃的服务 test.myApp/.hilfsklassen.AutoSyncService

07-29 14:48:35.140 I/WindowManager(145): WIN DEATH: Window{4071e300 test.myApp/test.myApp.Login paused=false}

07-29 14:48:35.150 I/WindowManager(145): WIN DEATH: Window{407def28 test.myApp/test.myApp.Startseite paused=false}

几秒钟后,Android 启动了我的应用程序:

07-29 14:48:54.750 I/ActivityManager(145):为服务 test.myApp/.hilfsklassen.AutoSyncService 启动 proc test.myApp:pid=7299 uid=10057 gids={3003}

但是有一个问题:

我的服务需要一些来自 test.myApp 的数据才能运行。
所以我知道如果 Android 启动我的应用程序,我的 start-activity 将被调用什么方法?

我已经尝试过 onResume(),但这只有在我的应用程序具有焦点(前景)时才有效。如果 Android 启动我的应用程序,它会在后台运行。所以我认为它一定是onRestart(),但是这个方法没有被调用。我必须在此方法中启动我的服务才能设置运行服务所需的一些变量!

克里斯

4

1 回答 1

1

当内存变低时,Android 运行时会在不发出警告的情况下终止后台服务。START_STICKY如果服务的 onStartComand() 方法返回或START_FLAG_REDELIVERY将在稍后重新启动。在后一种情况下,启动服务的原始意图与所有额外数据一起重新传递。该活动只会在用户手动启动时启动。

另一种方法是将您的数据存储在某处(例如 in sharedPreferences)并在服务中检索该数据。这样,服务变得独立于活动。希望有帮助。

于 2013-01-05T15:45:56.463 回答