アプリの実行中にバックグラウンドでいくつかのことを追跡する Android アプリを開発しています。私はAndroidの初心者なので、やりたいことを説明しようと思います。
セットアップ: MainActivity、TrackerActivity、TrackerService (サービスにはウェイクロックが含まれています)、および TrackerServiceWakeupReciever
これは、TrackerService が閉じられたときに実行されます。
public class TrackerServiceWakeupReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.android.TrackerService");
serviceIntent.putExtra("action", "checkSound");
context.startService(serviceIntent);
}
}
TrackerActivity からサービスを開始するコード:
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.android.TrackerService");
startService(serviceIntent);
アプリに入ると、MainActivity が開始されます。次に、TrackerActivity が MainActivity から開始されると、TrackerService が TrackerActivity の onCreate で開始されます。サービスはちょうど 10 秒間実行され、終了します。次に、TrackerServiceWakeupReciever が再びサービスを開始し、10 秒間実行されてループします。
なぜ 10 秒しか実行されないのですか? すぐに MainActivity に戻ってスリープ ボタンを押すと、サービスが実行され続けることに気付きました。デバイスがスリープ状態から抜けたときでも、サービスは実行されています。
この問題を解決するには?それを理解するために1週間を費やしました。私はそれが単純だと思います:)
前もって感謝します。マーティン