應用場景:
像點選推送通知時打開應用,但不知道應用是否處于打開狀态,這時這個判斷就能用上了:
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;
}
}