android – 如何完全重启应用程序?

我有一个应用程序在其首次启动的活动中启动远程服务.然后,在另一个活动中,用户可以设置应用程序的配置.请注意,第二个活动不受服务约束,我不想绑定它.

现在我的问题是:在更改配置设置后,如何从第二个活动重新启动整个应用程序?

现在,我正在使用onClickListener的按钮:

public void onClick(DialogInterface dialog,int which) {
    sauvegarde();
    Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
}

问题是:它只在不关闭整个应用程序的情况下重新启动当前活动,因此无需重新启动服务

有任何想法吗?

解决方法

您可以像这样使用Androids系统 AlarmManager

在您的活动中重新启动应用的代码

AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC,System.currentTimeMillis() + 1000,PendingIntent.getActivity(this.getBaseContext(),new    Intent(getIntent()),getIntent().getFlags()));
System.exit(2);

可以查看一个例子here

UPDATE

正如@CommonsWare指出的那样,当你不得不重新启动它时,它是一种设计应用程序的坏方法(不好的做法).如果你真的想这样做,你可以尝试设置alarmmanager来在你杀死你自己的进程后一秒钟启动你的应用程序:

AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC,getIntent().getFlags()));
android.os.Process.killProcess(android.os.Process.myPid());

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...