求めていることを実行するために検討できるオプションがいくつかあります。それぞれのオプションは、特定の状況と本当に達成したいことによって異なります。Service、IntentService (Service サブクラス)、AlarmManager、または (部分的な) WakeLock (および、私が見逃しているいくつかのより創造的なソリューション)。
一番簡単なのは Partial WakeLock を使うことだと思います。とてもシンプルで、画面がオフのときでもアクティビティでプロセスを実行したい場合に便利です。ただし、バッテリー寿命を食い尽くすため、控えめに使用する必要があります(これが、画面がオフのときにアクティビティが一時停止する理由です).
WakeLock を使用するには:
マニフェストにアクセス許可を追加します。
<uses-permission android:name="android.permission.WAKE_LOCK" />
アクティビティで、必要なときに WakeLock を開始します
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakeLockTag");
wakeLock.acquire();
ウェイクロックが完了したら (つまり、プロセスを実行する必要がなくなったら)、解放します。
wakeLock.release();