实现安卓重启使用
RestartAPPTool.restartAPP(MyApplication.getAppContext());
工具类
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import com.xinli.wenet.activitys.WelcomeActivity;
/**
* 此工具类用来重启APP,只是单纯的重启,不做任何处理。
* <p>
*/
public class RestartAPPTool {
/**
* 重启整个APP
*
* @param context the 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);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startService(intent1);
/**杀死整个进程**/
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
/***重启整个APP @param context the context*/
public static void restartAPP(Context context){
/* restartAPP(context,1);*/
Intent intent = new Intent(context, WelcomeActivity.class);
@SuppressLint("WrongConstant") PendingIntent restartIntent = PendingIntent.getActivity(context, 0, intent,
Intent.FLAG_ACTIVITY_NEW_TASK);
//退出程序
AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
assert mgr != null;
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,
restartIntent); // 1秒钟后重启应用
// 退出程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
}
service
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
/**
* 该服务只用来让APP重启,生命周期也仅仅是只是重启APP。重启完即自我杀死
*/
public class killSelfService extends Service {
/**关闭应用后多久重新启动*/
private static long stopDelayed=1;
private Handler handler;
private String PackageName;
/**
* Instantiates a new Kill self service.
*/
public killSelfService() {
handler=new Handler();
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
stopDelayed=intent.getLongExtra("Delayed",1);
PackageName=intent.getStringExtra("PackageName");
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName);
startActivity(LaunchIntent);
killSelfService.this.stopSelf();
}
},10);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}