Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序未恢复,如果从主活动或后台打开,则再次从主活动启动_Android_Android Fragments_Android Activity_Android Manifest_Android Homebutton - Fatal编程技术网

Android 应用程序未恢复,如果从主活动或后台打开,则再次从主活动启动

Android 应用程序未恢复,如果从主活动或后台打开,则再次从主活动启动,android,android-fragments,android-activity,android-manifest,android-homebutton,Android,Android Fragments,Android Activity,Android Manifest,Android Homebutton,登录后,我启动我的应用程序。当应用程序处于另一个活动或片段时,我按下主页按钮,应用程序将进入后台。但再次假设,如果从主页或后台启动,它将从第一个启动和登录屏幕开始。它不会从何处恢复到活动或片段它被置于背景中。 这是ActivityMain清单的代码 <application android:name="app.AppController" android:allowBackup="true" android:icon="@drawable/a

登录后,我启动我的应用程序。当应用程序处于另一个
活动
片段
时,我按下主页按钮,应用程序将进入后台。但再次假设,如果从主页或后台启动,它将从第一个启动和登录屏幕开始。它不会从何处恢复到
活动
片段
它被置于背景中。
这是ActivityMain
清单的代码

<application
        android:name="app.AppController"
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:roundIcon="@drawable/app_icon"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".Splash"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
        <activity android:name=".ActivityTwo"></activity>
    </application>  
在检查连接后,我已经完成了启动活动,那么问题出在哪里

 private void isInternetOn() {
        if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED)
        {
            r = new Runnable() {
                @Override
                public void run() {
                    startActivity(new Intent(Splash.this, MainActivity.class));
                    finish();
                }
            };
            // if connected with internet take Action
        } else if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED)
        {
            isOffline.setVisibility(View.VISIBLE);
            Snackbar snackbar=Snackbar.make(relativeLayout,"No internet connection",Snackbar.LENGTH_INDEFINITE).setAction("Close", new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
            snackbar.show();
        }

如何实现这一点,使应用程序从其放置到后台的位置开始?

是的,在登录后完成登录活动并转到特定的主屏幕活动。因为如果您没有完成登录活动,那么当应用程序从后台启动时,它会启动一个处于后台的活动。

尝试以下操作:

    .....
    setContentView(R.layout.activity_splash);
    if (!isTaskRoot()) {
        finish();
        return;
    }
    relativeLayout=(RelativeLayout)findViewById(R.id.relative);
    //your code

在启动屏幕中使用此代码。它将解决您的问题

签入您的设备不保留活动选项应禁用:

转到:


设置>>开发者选项>>不保留活动,应禁用(如果未禁用,请禁用并检查应用程序)。

在启动活动中使用标志处理它,你能显示你的启动活动吗?看一看代码我在启动主活动时完成启动活动我在主活动上有登录代码。如果我将此代码应用于启动活动,那么主活动如何应用此代码之后,您的应用程序将从您进入后台的位置开始,但是如果操作系统破坏了它,那么它将从Splash开始。是否需要添加任何代码,以便操作系统不会破坏活动。因为我的活动顺序是Splash,主活动(登录),我正在进一步添加和替换片段的第二个活动。isTaskRoot:返回此活动是否为任务的根。根目录是任务中的第一个活动。我的根目录活动是第二个活动?问题是,无论应用程序是启用还是禁用,应用程序都应该工作。但选项显示,当它启用“用户离开后立即销毁所有活动”。是的,销毁实例。但任务堆栈记录仍然存在。当你从最近的应用程序或启动器返回时,它会重新创建你所在的位置。试试看。
    .....
    setContentView(R.layout.activity_splash);
    if (!isTaskRoot()) {
        finish();
        return;
    }
    relativeLayout=(RelativeLayout)findViewById(R.id.relative);
    //your code