0

私はSmsrecieverを登録し、常にバックグラウンドで動作するサービスを作成しました。また、プログラムを使用していないときに、メインのアクティビティがバックグラウンドで作業するのを防ぎたいです。通常は機能していますが、SMSを受信した後、バックグラウンドでアクティビティが開始および実行されることがあります。これにより、バッテリーが消費されます。これを防ぐにはどうすればよいですか。

public void onCreate()
{
    ...

    startService(new Intent(this,ServiceCommunicator.class));

    ...
}               

 public void onBackPressed() {

    super.onBackPressed();
    android.os.Process.killProcess(android.os.Process.myPid()) ;

      }
4

1 に答える 1

1

あなたがしていることについてのいくつかのメモ:

  1. プロセスを強制終了することはお勧めしません。サービスを継続させてください。「startService」を呼び出すと、アクティビティが閉じられた後でも続行する必要があります。

  2. バックグラウンド サービスは、定義上、システムがメモリが必要であると判断するといつでも終了する可能性があります。SMS イベントを見逃したくない場合は、サービスをフォアグラウンドで実行します。

  3. サービスが使用する CPU とバッテリーが多いほど、OS がサービスを強制終了する可能性が高くなります。サービスはできるだけ軽量であるべきであり、長時間にわたって多くの作業を行う場合は、フォアグラウンドにある必要があります。

  4. アクティビティが大量の CPU を使用している場合、アプリを閉じるときにサービスも閉じられる可能性があります。これらは両方とも同じプロセスに属しているためです。マニフェストを介してサービスのプロセスを変更できます。

于 2012-10-20T20:49:20.117 に答える