2017-02-04 23 views
0

定期的にアクティビティをフォアグラウンドに表示します。コードはAndroid:ActivityManager.getRunningTasksにアクティビティが見つからないときに、そのアクティビティを前面に移動する方法

public void moveToFront() { 
     runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
      final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 
      Log.e(TAG,"moveToFront ..recentTasks.size = "+recentTasks.size()); 
      for (int i = 0; i < recentTasks.size(); i++) 
      { 
       Log.e(TAG, "Application executed : " 
         +recentTasks.get(i).baseActivity.toShortString() 
         + "\t\t ID: "+recentTasks.get(i).id+""); 
       // bring to front 
       if (recentTasks.get(i).baseActivity.toShortString().indexOf("MainActivity") > -1) { 
        Log.e(TAG, "Moving to front"); 
        activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME); 
        return; 
       } 
      } 
     } 
    }); 

下にある「activityManager.getRunningTasks」メソッドは、それゆえ私のコードは、前面に活動をプッシュしていない、(この方法はまた、推奨されません)私の活動のtaskinfoを返さないいくつかのシナリオがあります。

1)私はActivityManager.getRunningTasks is deprecated androidを見直したが、私は私が前面に私の活動をプッシュすることができるように

)of'activitymanager.moveTaskToFrontを私の上記のコードでそれを埋め込む方法(またはパラメータにそのフィールドをマップする方法を理解することができませんでした2)また、上記のコードが外部のアクティビティ(サービス)から呼び出され、Androidがアクティビティを殺した場合(メモリ不足の場合)の対処法

答えて

0

AndroidManifest.xmlのフォアグラウンドに必要なアクティビティをandroid:launchMode="singleTop"に設定する。 singleTopは、いつでも1つのアクティビティしか実行されないことを意味します。あなたの活動がバックグラウンドにあるとき、または殺されたときには、それは前に持ち込まれ、前景にあればそのまま残されます。

方法moveToFront()わずか

Intent intent = new Intent(context, activity.class) 
startActivity(intent) 
として Intentで活性を開き
関連する問題