我编写了启动器活动,可以选择显示或隐藏壁纸,以便我使用两个主题
机器人:Theme.Holo.Light.NoActionBar
和
机器人:Theme.Wallpaper.NoTitleBar
我要改变它
@Override
protected void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
Utils.PrintInfo("MainActivity.onNewIntent");
if (AppSettings.Data.WallpaperThemeChanged) {
AppSettings.Data.WallpaperThemeChanged = false;
startActivity(new Intent(this, ThemeReloadActivity.class));
finish();
return;
}
}
ThemeReloadActivity
就像这样
public class ThemeReloadActivity extends Activity {
@Override
protected void onResume() {
Utils.PrintError("ThemeReloadActivity.onCreate");
Activity activity = MainActivity.getMainActivity();
activity.finish();
startActivity(new Intent(activity, activity.getClass()));
super.onResume();
}
}
这是该活动的Manifest片段
<activity
android:name="com.maxcom.launcher.MainActivity"
android:clearTaskOnLaunch="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:stateNotNeeded="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
但有时如果垃圾邮件家庭主题没有改变,看起来应用程序根本不会重启
答案 0 :(得分:6)
您可以通过以下代码重新启动应用程序
Intent intent = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 1 :(得分:0)
// get rid of this activity instance and start a new one
finish();
Intent intent = new Intent(MyApp.getInstance(), MyActivity.class);
startActivity(intent);
答案 2 :(得分:0)
如果您只想重新开始活动,则可以这样做
this.recreate();
这将重新创建您的活动。