2011-09-11 13 views
-1

私はバックグラウンドでタイマーイベントを実行していて、非アクティブをチェックしているアプリがあります。一定の時間が経過したら、私のアプリケーション(タスク)のために現在最も活動しているアクティビティの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()メソッドをコールして閉じることができます。

ありがとうございました。

答えて

1

共通のスーパークラスのすべてのアクティビティサブクラスを、 "TopmostActivity"変数を保持する共通のonPauseメソッドとonResumeメソッド(おそらくスーパークラスの静的フィールド)で作成します。

関連する問題