簡體   English   中英

如何知道應用程序何時在android中成為前台

[英]how to know when the application comes to foreground in android


我正在開發一個Android應用,其中我已經使用tabhost來顯示標簽欄
在每個選項卡中,我托管了FragmentActivity,而FragmentActivity又托管了不同的片段
我正在通過網絡呼叫從服務器獲取數據,並且在發送每個呼叫時,我必須發送身份驗證令牌(為此我首先進行登錄呼叫),身份驗證令牌在30分鍾后自動失效。
現在的問題是,如果用戶在應用程序中間時按下主頁按鈕,則該應用程序進入后台,並且如果用戶再次啟動該應用程序(即,將其置於前台(例如30分鍾或更長時間)),同時認證令牌過期,則網絡通話失敗。
我怎么知道我的應用程序何時出現在前台?
我已經用Google搜索這個問題,而我現在要解決的解決方案是

  1. 使用onCreate(),onPause(),onResume()方法,但在我的情況下,我有5個不同的選項卡,根據此解決方案,我將必須檢查每個FragmentActivity的方法,這些方法不僅會在應用恢復時調用,而且還會標簽切換和FragmentActivities的初始創建。
  2. 我得到的第二種方法是使用ActivityManager

兩種方法都不適合我............在我的應用中間,真的需要幫助

使用以下代碼:

ActivityManager activityManager = (ActivityManager) appContext.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> services = activityManager
        .getRunningTasks(Integer.MAX_VALUE);
boolean isActivityFound = false;

if (services.get(0).topActivity.getPackageName().toString()
        .equalsIgnoreCase(appContext.getPackageName().toString())) {
    // Your activity is in foreground, do what you've got to do..
}

您需要許可:

<uses-permission android:name="android.permission.GET_TASKS" />

暫無
暫無

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

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