私はバックグラウンドでタイマーイベントを実行していて、非アクティブをチェックしているアプリがあります。一定の時間が経過したら、私のアプリケーション(タスク)のために現在最も活動しているアクティビティのfinish()メソッドを呼びたいと思う。私のアプリはバックグラウンドで実行できるので、デバイス上で最も活発なアクティビティを使うことはできません。私の問題は、自分の仕事のために一番上のアクティビティを見つけて、そのアクティビティのfinish()メソッドを呼び出すことです。以下は、私が使用しているRunnableタイマーのスニペットです。私のスニペットの "activity"変数は、私が見つけられないようなものです。タスクの一番上のアクティビティを見つけるにはどうすればよいですか?
mUpdateTimeTask = new Runnable()
{
public void run()
{
// - for every 10 seconds, this runnable task will check the inactivity time and will exit this app
// if the time allocated is exceeded
long longNowTime = System.currentTimeMillis()/1000;
if (longNowTime-globalVariables.longLastActivityTime >= globalVariables.intLockoutDuration)
{
// - first, we'll stop the lockout timer from running
mHandler.removeCallbacks(mUpdateTimeTask);
// - call the finish() method to close the top most activity for this task (app)
activity.finish();
}
mHandler.postDelayed(this,mIntInterval);
}
};
トップアクティビティのActivityオブジェクトを取得してfinish()メソッドをコールして閉じることができます。
ありがとうございました。