簡體   English   中英

Android,跟蹤應用何時進入后台

[英]Android, track when app goes to background

背景:我將一些數據轉儲到Application類中,並在短暫的間隔后或應用程序進入后台(例如,當用戶按下“主頁”按鈕或“任務切換器”按鈕時)將其保存到文件中。 我不想使用Activity類的onPause(),因為應用程序中有許多活動,我必須檢查所有活動的onPause()。 當我從應用程序中的一項活動跳到另一項活動時(會創建不必要的保存操作),也會調用onPause。

問題 :當應用程序進入后台時,無論它處於哪個活動,都會觸發一個通用事件嗎?

謝謝

連續檢查以下代碼意味着您可以使用Timer類。

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTasks = null;
try {
    runningTasks = activityManager.getRunningTasks(1);
} catch (Exception e) {

}
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
ComponentName topActivity = runningTaskInfo.topActivity;
if(topActivity.getPackageName().equals(your packagename)){
   S.o.p("fine");}
else{
   S.o.p.("application sent to background");}

當活動從視圖中隱藏時(即用戶按下主頁按鈕onStop()將調用onStop() onPause()僅在Activity被隱藏時使用,即由於某些重疊而部分可見。 當然, onPause()onStop()被調用之前被調用。 您可以在Android Developers上查看所有生命周期。 我鼓勵您使用生命周期,而不是反對生命周期。 狀態更改時保存數據。

對於計划的數據存儲,我建議您使用計時器。 當您將所有數據提交到應用程序上下文中時,您可以使用較少的恢復點,因此建議將日期存儲在onDestroy()調用中。 如果沒有,我建議實現一個TimerTask來安排數據的常規序列化。

要回答您的問題,不! 根本不是Android要整體考慮您的應用程序並擁有一個生命周期。 每個活動有一個生命周期,所有活動都由堆棧及其各自的生命周期捆綁在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM