2015-09-25 62 views
0

ios中有一項出色功能 - appdelegate中的一種方法,當整個應用返回到與用戶的交互時,由ios調用。在android上,每個活動控制器上都有一個onResume()方法,它從外部運行相同的應用程序(取決於以前的活動)。所以你無法從內心或外部理解賽格的哪一方。例如,您希望每次從後臺恢復時鎖定應用的屏幕。如果您的應用程序中有大量活動並在它們之間流竄 - 您必須每次都傳遞布爾標誌以顯示目標活動理解它是從應用程序內部調用的(而不是從其他應用程序的返回)以及屏幕不應該被鎖定。有沒有更好的模式來捕捉隱藏\取消隱藏整個應用程序 - 就像在ios中一樣?Android - 獲取應用背景恢復事件 - 像iOS中的appdelegate一樣iOS

回答

0

一種方法是擁有一個BaseActivity,您的所有活動都從中繼承,並對活動進行計數。 實施例:

public class BaseActivity extends Activity { 

    private static int sActivitiesAlive; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (sActivitiesAlive == 0) { 
      onFirstActivityResume(); 
     } 
     sActivitiesAlive++; 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     sActivitiesAlive--; 
    } 

    protected void onFirstActivityResume() { 
     // Override in children activities 
    } 
} 
0

Android不具有等同的方法 - 最相似的回調的onResume()(which gets called whenever your activity resumes)。如果要跟蹤用戶是否在特定活動中處於活動狀態,則可以在調用onPause()時手動存儲Date,然後檢查onResume()是否已經過去X分鐘。

private static final long TIMEOUT = 60 * 1000; // 1 min 
long lastInteraction; 

lastInteraction = new Date().getTime(); // set in onPause() 
boolean isFromBackground = new Date().getTime() - lastInteraction > TIMEOUT; // check in onResume()