以编程方式重新启动Android应用程序

4

我正在开发一个针对6个国家的I18N应用程序,有一个需求是,当用户从设置中更改语言时,应用程序应该重新启动并以更改后的语言显示应用程序。为此,我将语言值存储在共享首选项中,并与当前语言值进行比较。如果值不同,我需要重新启动应用程序。我使用以下代码实现:

if (currentLanguage == null) {
    Util.saveStringInSP(_activity, "LANGUAGE", languageValue);
}
else if (currentLanguage.equalsIgnoreCase(languageValue)) {
    String currentLanguage = Util.getStringFromSP(_activity, "LANGUAGE");
}
else {
    try {
        android.os.Process.killProcess(android.os.Process.myPid());
    }
    catch(Exception e) {   }
    Intent i = new Intent();
    PackageManager manager = getPackageManager();
    i = manager.getLaunchIntentForPackage("com.pfizer.stablemate");
    i.addCategory(Intent.CATEGORY_LAUNCHER);
    startActivity(i);
}

请提供一段代码,以便在程序中重新启动Android应用程序。

4
你不需要杀死或重启应用。你只需要在清单文件的configChanges字段中包含locale,Android系统就会为你重启活动。 - njzk2
我不想重新启动活动,我需要从头开始重新启动整个应用程序。 - Ganesh
然后你可以在configChanges字段中实际上拥有locale,并在你的activity的onConfigChange中接收到locale更改。 - njzk2
1个回答

8

尝试:

Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(        
getBaseContext().getPackageName() );
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接