2016-04-06 23 views
0

私はアプリケーションがバックグラウンドで実行されているかどうかを確認する必要があります。私は以下のようにしています。アプリがバックグラウンドで実行されているか、アンドロイドを殺しているかどうかを確認するにはどうすればよいですか?

ActivityManager am = (ActivityManager) context 
       .getSystemService(Context.ACTIVITY_SERVICE); 

List<ActivityManager.RunningTaskInfo> alltasks = am.getRunningTasks(1); 
      for (ActivityManager.RunningTaskInfo aTask : alltasks) { 
       // Used to check for CALL screen 
       if (aTask.topActivity.getClassName().equals("com.android.phone.InCallScreen") 
         || aTask.topActivity.getClassName().equals("com.android.contacts.DialtactsActivity")) { 
        // When user on call screen show a alert message 
        Toast.makeText(context, "Phone Call Screen.", Toast.LENGTH_LONG).show(); 
       } 

       // Used to check for SMS screen 

       if (aTask.topActivity.getClassName().equals("com.android.mms.ui.ConversationList") 
         || aTask.topActivity.getClassName().equals("com.android.mms.ui.ComposeMessageActivity")) { 
        // When user on Send SMS screen show a alert message 
        Toast.makeText(context, "Send SMS Screen.", Toast.LENGTH_LONG).show(); 
       } 


       // Used to check for CURRENT example main screen 

       String packageName = "com.sap.rex.ui"; 

       if (aTask.topActivity.getPackageName().equals(packageName)) { 
        isInBackground = false; 
        Toast.makeText(context, "Current Example Screen.", Toast.LENGTH_LONG).show(); 
       } 

上記のコードでは、トップアクティビティパッケージ名がバックグラウンドであるかどうかを確認するだけです。

2つまたは3つのアプリケーションをその上に開くと、アプリケーションのパッケージ名が一番上になるため、そこにいるにもかかわらず、バックグラウンドではないということです。

私が間違っていることを教えてください。

おかげ

+0

回答:この質問の回答http://stackoverflow.com/questions/8489993/check-android-application-is-in-foreground-or-not –

+0

@Dhavalkumar Solanki私は確認してお知らせします – coders

+0

時間 –

答えて

0

私はあなたがgetRunningAppProcesses()を使用してRunningAppProcessInfoで定義されたフラグに対してimportanceフィールドを確認したいと思います。アプリのプロセスが可視か、背景か、その他の状態であるかどうかを教えてください。

+0

確かに私はチェックし、あなたに知らせる – coders

関連する問題