Androidアプリを再起動
6566 ワード
一、別のAPPを起動する
コードは比較的簡単で、直接貼り付けます:
2、本アプリを再起動する
a.FLAGを使用するACTIVITY_CLEAR_TOP :
b.AlarmManagerの使用:
c.サービスを起動し、自分でAPPのプロセスを殺し、最後にサービスでパッケージ名でAPPを起動し、サービスを破棄する
最後に忘れないでAndroidManifestでxmlファイルにサービスを登録する
コードは比較的簡単で、直接貼り付けます:
try {
PackageManager packageManager = getActivity().getPackageManager();
Intent intent=new Intent();
intent = packageManager.getLaunchIntentForPackage("com.maiji.textviewchangedemo"); // app
startActivity(intent);
} catch (Exception e) {
Log.e(" ",e.getMessage()); // , app ,
}
2、本アプリを再起動する
a.FLAGを使用するACTIVITY_CLEAR_TOP :
Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
b.AlarmManagerの使用:
Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1
System.exit(0);
c.サービスを起動し、自分でAPPのプロセスを殺し、最後にサービスでパッケージ名でAPPを起動し、サービスを破棄する
/**
* APP, , 。
* Created by 13itch on 2016/8/5.
*/
public class RestartAPPTool {
/**
* APP
* @param context
* @param Delayed
*/
public static void restartAPP(Context context,long Delayed){
/** , APP*/
Intent intent1=new Intent(context,killSelfService.class);
intent1.putExtra("PackageName",context.getPackageName());
intent1.putExtra("Delayed",Delayed);
context.startService(intent1);
/** **/
android.os.Process.killProcess(android.os.Process.myPid());
}
/*** APP*/
public static void restartAPP(Context context){
restartAPP(context,2000);
}
}
/***
* APP , APP。
*/
public class killSelfService extends Service {
/** */
private static long stopDelayed=2000;
private Handler handler;
private String PackageName;
public killSelfService() {
handler=new Handler();
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
stopDelayed=intent.getLongExtra("Delayed",2000);
PackageName=intent.getStringExtra("PackageName");
handler.postDelayed(()->{
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName);
startActivity(LaunchIntent);
killSelfService.this.stopSelf();
},stopDelayed);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
最後に忘れないでAndroidManifestでxmlファイルにサービスを登録する
<service
android:name=".killSelfService"
/>