项目开发过程中需要实现重启App的功能,常用的可行方案有:
1. 使用 FLAG_ACTIVITY_CLEAR_TOP :
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(getApplication().getPackageName());
LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(LaunchIntent);
}
}, 100);// 1秒钟后重启应用
2. 使用 AlarmManager :
Intent intent = getPackageManager()
.getLaunchIntentForPackage(getApplication().getPackageName());
PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用
System.exit(0);
3.使用Service
开启一个Service,然后自己杀死APP的进程,最后在Service里通过包名来启动一个APP并销毁Service。
(1)RestartAPPTool.java
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);
}
}
(2)killSelfService.java
public class killSelfService extends Service {
/**关闭应用后多久重新启动*/
private static long stopDelayed=50;
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”,50);
PackageName=intent.getStringExtra(“PackageName”);
handler.postDelayed(new Runnable() {
@Override
public void run() {
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;
}
}
(3)需要在AndroidManifest.xml中注册Service
(4)在需要的地方调用即可
RestartAPPTool.restartAPP(getApplicationContext(),100);
今天的文章android 服务 重启,Android APP重启的几种方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31087.html