0


私は
各タブでタブバーにタブホストを使用したAndroidアプリを開発しています.FragmentActivityをホストしました.FragmentActivityはさまざまなフラグメントをホストしています.
ネットワーク呼び出しを介してサーバーからデータを取得しており、各呼び出しを送信しながら認証を送信しています.トークン(最初にログイン呼び出しを行う)認証トークンは30分後に自動的に期限切れになります..
アプリの途中でユーザーがホームボタンを押すとアプリがバックグラウンドになり、ユーザーが再びアプリ、つまり、フォアグラウンドに移動します (たとえば、30 分以上経過した後) その間、認証トークンの有効期限が切れ、ネットワーク呼び出しが失敗します....
アプリがフォアグラウンドになったことをどのように知ることができますか ????????
この問題と解決策をグーグルで検索しました

  1. onCreate()、onPause()、onResume() メソッドを使用しますが、私の場合は 5 つの異なるタブがあり、このソリューションに従って、各 FragmentActivity のメソッドをチェックする必要があります。これらのメソッドはアプリの再開時だけでなく、タブの切り替えと FragmentActivities の初期作成....
  2. 私が持っている2番目のアプローチは、ActivityManagerの使用です

どちらのアプローチも私には合いません ............ m 私のアプリの途中で、本当に助けが必要です

4

1 に答える 1

-1

次のコードを使用します。

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" />
于 2013-06-16T19:05:37.730 に答える