重新启动应用

时间:2017-01-10 03:59:28

标签: java android android-activity

我需要能够在应用关闭后重新打开上次打开的活动,然后重新启动手机。

我指的是thisthis。在第二个链接中,我在标记答案的注释中遇到了与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(),而不是开始一个新的意图。

0 个答案:

没有答案