我需要能够在应用关闭后重新打开上次打开的活动,然后重新启动手机。
我指的是this和this。在第二个链接中,我在标记答案的注释中遇到了与OP相同的问题,但解决方案对我不起作用。
我可以使用上次打开的活动启动应用,但点击上一个活动会返回一个空白屏幕。将finish()添加到DispatcherActivity作为建议的第二个链接后,它会使用日志消息关闭应用程序:
W / IInputConnectionWrapper:非活动InputConnection上的showStatusIcon
我已经搜索了该错误的解决方案,但他们涉及使用' connection.close()'或者与之无关的HTTP问题。
我也尝试过像this这样的替代品,但它们也没有用。
关于重新启动手机后重新打开上次打开的屏幕,this answer表示onSavedInstanceState不适用于重新启动的手机。
这是我的AndroidManifest的代码
<activity
android:name=".Activity.TakeoverMainActivity">
</activity>
<activity android:name=".Activity.TakeoverNextActivity" />
...
<activity android:name=".Activity.DispatcherActivity"
android:launchMode="singleTop"
android:windowSoftInputMode="stateVisible|adjustResize"
android:alwaysRetainTaskState="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这是我的DispatcherActivity的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dispatcher);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString(LAST_ACTIVITY, TakeoverMainActivity.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = TakeoverMainActivity.class;
}
Intent intent = new Intent(this, activityClass);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
}
这是我其他活动的onPause方法
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
SharedPreferences.Editor activityEditor = prefs.edit();
activityEditor.putString(LAST_ACTIVITY, getClass().getName());
activityEditor.commit();
}
任何解决方案或建议都将不胜感激。谢谢。
更新: SadiqMdAsif在评论中解决了我的问题。我的问题是我在第二个Activity上使用了finish(),而不是开始一个新的意图。