2012-12-23 45 views
0

我在我的應用程序中實現會話超時。 這裏我想做的是啓動登錄活動當且僅當應用程序可見(即顯示),否則我不想做任何事情,因爲當應用程序再次被激活時,它會自動從登錄活動本身開始。 。開始活動,如果應用程序可見

final List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 

    for (RunningTaskInfo runningTaskInfo : tasks) { 
     runningactivities.add(0,runningTaskInfo.topActivity.toString()); 
    } 

但因爲它啓動登錄活動在這兩種情況下,這不爲我工作..

請幫助! 謝謝

+1

我認爲你需要閱讀活動生命週期。 您知道應用程序/活動何時可見,何時未暫停。即使離開它,應用程序通常也不會被殺死。 http://developer.android.com/reference/android/app/Activity.html –

回答

0

一個解決方案是在您的活動中使用意向接收器。您可以在活動(或活動)中註冊一個接收器,以便您只希望啓動新活動。然後,您可以使用sendBroadcast(intent)啓動新的活動。你應該註冊和註銷您在每個活動reciever如下圖所示:

@Override 
protected void onResume() { 
    IntentFilter filter = new IntentFilter(CONSTANT_FOR_INTENT); 
    registerReceiver(receiver, filter); 
    } 

@Override 
protected void onDestroy() { 
    unregisterReceiver(receiver); 
} 

private BroadcastReceiver receiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //handle the intent here - launch activity, etc 
    } 
}; 

現在你可以用這個啓動您的活動:

Intent intent=new Intent(CONSTANT_FOR_INTENT); 
sendBroadcast(intent); 

您還可以使用sendOrderedBroadcast設置優先級和做其他事意圖是如果你的活動沒有運行。

相關問題