天天看點

判斷目前應用是否在前台運作

應用場景:

像點選推送通知時打開應用,但不知道應用是否處于打開狀态,這時這個判斷就能用上了:

public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        isRunningForeground();

    }

    public boolean isRunningForeground(){

        String packageName=getPackageName(this);

        String topActivityClassName=getTopActivityName(this);

        System.out.println("packageName="+packageName+",topActivityClassName="+topActivityClassName);

        if(packageName!=null&& topActivityClassName != null 

        && topActivityClassName.startsWith(packageName)) {

            System.out.println("---> 前台運作");

            return true;

        }else{

            System.out.println("---> 背景運作");

            return false;

        }

    }

    public String getTopActivityName(Context context){

        String topActivityClassName=null;

         ActivityManager activityManager =

        (ActivityManager)(context.getSystemService(android.content.Context.ACTIVITY_SERVICE )) ;

         List<RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1) ;

         if(runningTaskInfos != null){

             ComponentName f=runningTaskInfos.get(0).topActivity;

             topActivityClassName=f.getClassName();

         }

         return topActivityClassName;

    }

    publicString getPackageName(Context context){

         String packageName = context.getPackageName();  

         returnpackageName;

    }

}