android:在语言更改时重新启动应用程序而不是 activity
android: restart application instead of activity on language change
我的申请中确实有多个活动和多个片段 运行。每当我从设备语言设置更改语言环境时,只有当前 activity 会重新启动。有没有办法在设备设置下更改语言后重新启动整个应用程序?
您可以注册一个 BroadcastReceiver
to listen for the intent ACTION_LOCALE_CHANGED
,然后在收到意图后,您可以执行重新启动应用程序的逻辑。像这样:
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//RESTART APPLICATION
}
};
//register broadcastreceiver
LocalBroadcastManager.getInstance(getContext())
.registerReceiver(mBroadcastReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
//remember to unregister in onDestroy with LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mBroadcastReceiver);
要"restart"申请,可以使用:
Intent intent = new Intent(this, YourHomeActivity.class);
this.startActivity(intent);
this.finishAffinity();
开始你的家 activity 并清除所有其他活动。
或者像这样:
Intent mStartActivity = new Intent(MainActivity.this, MainActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(MainActivity.this, mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)MainActivity.this.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);
实际停止应用程序并在 100 毫秒后重新启动(将其设置为您想要的任何值)。
我的申请中确实有多个活动和多个片段 运行。每当我从设备语言设置更改语言环境时,只有当前 activity 会重新启动。有没有办法在设备设置下更改语言后重新启动整个应用程序?
您可以注册一个 BroadcastReceiver
to listen for the intent ACTION_LOCALE_CHANGED
,然后在收到意图后,您可以执行重新启动应用程序的逻辑。像这样:
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//RESTART APPLICATION
}
};
//register broadcastreceiver
LocalBroadcastManager.getInstance(getContext())
.registerReceiver(mBroadcastReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
//remember to unregister in onDestroy with LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mBroadcastReceiver);
要"restart"申请,可以使用:
Intent intent = new Intent(this, YourHomeActivity.class);
this.startActivity(intent);
this.finishAffinity();
开始你的家 activity 并清除所有其他活动。
或者像这样:
Intent mStartActivity = new Intent(MainActivity.this, MainActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(MainActivity.this, mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)MainActivity.this.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);
实际停止应用程序并在 100 毫秒后重新启动(将其设置为您想要的任何值)。