私のアプリケーションはランチャーのように機能します。アプリケーション内からアプリが起動されると、一定時間だけプレイできるタイマーが開始されます。ただし、ランチャーに戻った場合は、タイマーを一時停止してから、別のアプリを起動すると再び開始するようにします. 私は次のものを持っています:
protected String doInBackground(String... strings) {
while (playTime < ALLOWED_TIME) {
try {
Thread.sleep(1000);
long endTime = System.nanoTime() / Constants.NANO_SECONDS;
int endTimeSec = (int) endTime;
playTime = endTimeSec - START_TIME;
if (stored.getBoolean("Foreground", false)) {
break;
cancel(true); //run this code if Arcade app is exited before time expires
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
編集:バックグラウンドタスクを適切にキャンセルするには、コードの抜粋を並べ替える必要があることが判明したため、回答を参照してください。