アプリケーションが実行されているかどうかを確認するには、次のことができます。
if(isProcessRunning("package_name")) {
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
public boolean isProcessRunning(String process) {
ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
for(int i = 0; i < procInfos.size(); i++){
if (procInfos.get(i).processName.equals(process)) {
return true;
}
}
return false;
}
これを試してみてください。
アプリケーションに 1 つまたは 2 つのアクティビティしかない場合、またはアプリケーションに BaseActivity が 1 つあり、それが他のアクティビティによって拡張されている場合は、次のようにします。
public class MyApplication extends Application{
private static boolean mIsRunning = false;
public static boolean isRunning(){
return mIsRunning;
}
public void setRunning(boolean isRunning){
mIsRunning = isRunning;
}
}
あなたの活動から:-
public void onCreate(Bundle savedInstanceState){
MyApplication.setRunning(true);
}
public void onDestroy(){
MyApplication.setRunning(false);
}
そして、次のように確認できます:-
if(!MyApplication.isRunning()) {
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}