gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:08 28 4
gpt4 key购买 nike

我有一个应用程序在其首次启动的 Activity 中启动远程服务。然后,在另一个 Activity 中,用户可以设置应用程序的配置。请注意,第二个 Activity 未绑定(bind)到服务,我不想绑定(bind)它。

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

现在,我使用的是 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);
}

问题是:它只重启当前 Activity 而不关闭整个应用程序,因此也没有重启服务

有什么想法吗?

最佳答案

可以使用安卓系统AlarmManager像这样:

在您的 Activity 中重启应用的代码:

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

例子可查here

更新

正如@CommonsWare 指出的那样,当您必须重新启动它时,这是一种糟糕的设计应用程序的方法(不好的做法)。如果你真的想这样做,你可以尝试将 alarmmanager 设置为在你杀死自己的进程后立即启动你的应用程序:

AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, PendingIntent.getActivity(this.getBaseContext(), 0, new Intent(getIntent()), getIntent().getFlags()));
android.os.Process.killProcess(android.os.Process.myPid());

关于android - 如何完全重启应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294428/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com