当我在使用主页按钮后为我的应用充电时,它会在我的第一个活动中启动

时间:2015-05-21 10:15:58

标签: android performance android-intent android-activity android-homebutton

我确信这将是一个非常新手的问题但是我被困住了,我不知道如何摆脱这个问题!

我有一个有三个活动的应用程序,当我使用HOME按钮并再次打开应用程序时,它总是进入第一个活动,即使我在第二个或第三个活动。

编辑3: 我的应用程序有三个活动,第一个是主菜单,第二个是表格地图,第三个是表格数据。根据配置,关闭第三个活动必须将我带到第一个或第二个活动,当我离开第三个活动时,我不希望它留在活动堆栈上。我的程序从一个Activity到另一个Activity正常工作。我的问题是,当我使用Home Button时,我的应用程序会完成除第一个活动之外的所有活动。

也许我必须修改清单上的任何内容,或者我必须以特定的方式使用RestoreInstanceState但我正在搜索这么难以找不到任何东西。提前谢谢!

编辑1:我正在添加我的'应用'xml部分的清单:

<application
    android:allowBackup="true"
    android:icon="@drawable/icobaccus"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name="com.example.tpv2_tablet.Activity_Start"
        android:label="@string/app_name" 
        android:screenOrientation="landscape"
        android:windowSoftInputMode="adjustPan" 
        android:configChanges="keyboardHidden|keyboard"
        android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.tpv2_tablet.Activity_Zonas"
        android:label="@string/app_name" 
        android:screenOrientation="landscape"
        android:windowSoftInputMode="adjustPan" 
        android:configChanges="keyboardHidden|keyboard"
        android:theme="@android:style/Theme.NoTitleBar">
    </activity>
    <activity
        android:name="com.example.tpv2_tablet.PrintDialogActivity"
        android:label="@string/app_name" 
        android:screenOrientation="landscape"
        android:windowSoftInputMode="adjustPan" 
        android:configChanges="keyboardHidden|keyboard"
        android:theme="@android:style/Theme.NoTitleBar">
    </activity>
    <activity
        android:name="com.example.tpv2_tablet.Activity_Mesas"
        android:label="@string/app_name" 
        android:screenOrientation="landscape"
        android:windowSoftInputMode="adjustPan" 
        android:configChanges="keyboardHidden|keyboard">
    </activity>
</application>

编辑2:也许我在调用其他活动时做错了,或者我正在调用错误的标记:

Intent intent = new Intent(Activity_1.this, Activity_2.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            finish();
                            startActivity(intent);

2 个答案:

答案 0 :(得分:1)

删除

<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>

来自activities以外的所有launcher activity

要了解原因,请阅读Google Documentation here

除去:

android:noHistory="true"

因为这会从activity

中删除activity stack

除去

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();

Intent intent = new Intent(Activity_1.this, Activity_2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();
startActivity(intent); 

了解原因检查this answer

答案 1 :(得分:0)

您需要在Android清单中设置android:clearTaskOnlaunch="false"