這似乎檢查標誌我實際上試圖跟蹤的是你的應用程序中「已啓動」活動的數量:#(已開始的活動)> 0意味着你的應用程序on沒有被置於後臺,因爲如果用戶按Home,所有你的應用程序的活動都會被調用onStop()。
爲了追蹤「入門」活動的數量,你可以引進像這樣一個單:
public class LifecycleTracker {
private LifecycleTracker mInstance;
private int mNrOfStarted;
private LifecycleTracker() {
mNrOfStarted = 0;
}
public static LifecycleTracker getInstance() {
if (mInstance == null) {
mInstance = new LifecycleTracker();
}
return mInstance;
}
public void incrementStarted() {
mNrOfStarted++;
}
public void decrementStarted() {
mNrOfStarted--;
}
public boolean fromBackground() {
return mNrOfStarted == 0;
}
}
然後,在您的所有活動的在onStart()方法,你應該首先檢查您是否到來從背景:
if (LifecycleTracker.getInstance().fromBackground()) {
//start authentication
//don't forget to increment after authentication as well!
} else {
LifecycleTracker.getInstance().incrementStarted();
}
而且在所有活動的的onStop()方法,你應該減:
LifecycleTracker.getInstance()decrementStarted。 ();
我預測這會讓你感覺有些困難。您正試圖強加一些Android無法識別或支持的應用程序生命週期概念。 「主頁」按鈕不會導致您「離開」應用程序。您的第一步將是明確表示「離開」應用程序的意義,Android條款。 – 2013-03-14 13:38:34