1

サービスは常にバックグラウンドで実行する必要があるため、ブロードキャストレシーバーを使用して起動時に開始するアプリケーションがあり、アクティビティとプロセスもあります。android:process マニフェストタグを使用して、独自のプロセスでサービスを開始しています。

UI はプレゼンテーションのニーズにのみ対応しており、アクティビティがアクティブでない場合でもユーザーがサービスを実行できるようにしたいと考えています。

この追加パラメーターを使用してサービスを開始しています。

intent.putExtra(Intent.EXTRA_DONT_KILL_APP, true);

問題は、戻るボタンまたはホームボタンを押すと、アクティビティの on destroy メソッドが呼び出され、サービスが実行されているように見えますが (タスクマネージャーに表示されます)、想定どおりに動作していないため、ネットに接続して送信する必要があることです。一部のデータですが、タイマータスクを使用してX回ごとに送信されますが、タスクが起動しないため、データは送信されません。

4

2 に答える 2

1

サービスは常にバックグラウンドで実行する必要があるため

お願い、それはやめて。まず第一に、それは不可能です。なぜなら、Android があなたを殺し、ユーザーがあなたを殺してしまうからです。現在の実装でどれだけの RAM を浪費しているかを考えると、どちらもより迅速にあなたを殺そうとします。

Android:process マニフェスト タグを使用して、独自のプロセスでサービスを開始しています。

それもしないでください。RAM を無駄に浪費しています。このサービスには、別のプロセスは必要ありません。

この追加パラメーターを使用してサービスを開始しています。

そのパラメーターは、あなたが思っていることをしません。サービスの開始では使用されません。

ネットに接続してデータを送信する必要がありますが、X回ごとにタイマータスクを使用しますが、タスクが起動しないため、データは送信されません。

ステップ #1: 既存のサービスを削除します。

ステップ #2: と を使用AlarmManagerWakefulIntentServiceます。「X 時間ごと」に呼び出されるように (おそらく起動時の受信機を使用して) アラームをスケジュールします。WakefulIntentService「ネットに接続してデータを送信」し​​てください。

于 2010-11-07T00:48:12.087 に答える