1

アプリのバックグラウンドスレッドとして実行されているサービスを使用してアプリを作成しました。Andrdoidは、メモリ不足のために一部のアプリを強制終了することがあります。殺されたこれらのアプリの1つは、私のアプリケーションでした。

07-29 14:48:35.140 I / ActivityManager(145):プロセスtest.myApp(pid 4847)が停止しました。

07-29 14:48:35.140 W / ActivityManager(145):クラッシュしたサービスtest.myApp/.hilfsklassen.AutoSyncServiceの再起動を19600msでスケジュールする

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のproctest.myAppを開始します:pid = 7299 uid = 10057 gids = {3003}

ただし、問題が1つあります。

サービスを実行するには、test.myAppからのデータが必要です。
だから私はAndroidが私のアプリを起動した場合、私のstart-activityのどのメソッドが呼び出されるかを知っていますか?

onResume()を試しましたが、これは、アプリにフォーカス(フォアグラウンド)がある場合にのみ機能します。Androidが私のアプリを起動すると、バックグラウンドで実行されます。そのため、onRestart()である必要があると思いましたが、このメソッドは呼び出されませんでした。サービスの実行に必要ないくつかの変数を設定するには、このメソッド内でサービスを開始する必要があります。

クリス

4

1 に答える 1

1

メモリが少なくなると、Android ランタイムは警告なしにバックグラウンド サービスを強制終了します。サービスの onStartComand() メソッドがSTART_FLAG_REDELIVERYSTART_STICKYを返すと、後で再開されます。後者の場合、サービスを開始する最初の意図は、すべての追加データとともに再配信されます。アクティビティは、ユーザーが手動で起動したときにのみ開始されます。

もう 1 つの方法は、データをどこかに (たとえば にsharedPreferences) 保存し、そのデータをサービス内で取得することです。このようにして、サービスはアクティビティから独立します。それが役立つことを願っています。

于 2013-01-05T15:45:56.463 に答える