Android onCreate调用了Second Activity

时间:2014-11-18 13:32:14

标签: android

您好我有2项活动,   活动A和活动B,   所以它的活动A和按钮点击我转到活动B.   现在我按下主页按钮然后去做其他事情。由于内存问题,任务由android关闭。现在,当我尝试再次打开它时,它从活动B开始。这是预期的吗? 如果有,是否有办法阻止它?

以下是AndroidManifest中定义了两个活动的部分 活动A = MenuActivity,活动B = AndroidLauncher

<activity
            android:name=".AndroidLauncher"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
            android:label="@string/app_name"
            android:finishOnTaskLaunch="true"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".MenuActivity"
            android:clearTaskOnLaunch="true"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

此外,我正在使用活动B的onCreate代码

protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game_view);
            AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        int gameType = getIntent().getIntExtra("GAME_TYPE", 0);
        GDXtoAndroidInterface.sharedInstance().activity = this;
        TurnBasedHelper.sharedInstance().listener = this;
        FrameLayout lg=(FrameLayout)findViewById(R.id.layout);
        lg.addView(initializeForView(new LetterPress(GDXtoAndroidInterface.sharedInstance(),gameType), config));
        busyDialog = new ProgressDialog(this);
         busyDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
         busyDialog.setCanceledOnTouchOutside(false);
         busyDialog.setCancelable(false);
         showBusy("Setting up..");
         Log.d("MSG", "on create called launcher");
    }

另外我需要这个的原因是活动A就像一个登录屏幕,活动B就是基于它。活动B不能单独工作。用户必须从活动A转移到活动B

由于

1 个答案:

答案 0 :(得分:0)

  

当我再次尝试打开它时,它从活动B开始。这是预期的吗?

是的,这是预期的行为。

当您按下主页按钮(而不是“后退按钮”)时,默认情况下会将整个任务发送到后台,并在重新启动它时(从最近的任务屏幕或主屏幕上的应用程序图标)它将返回默认情况下,前景具有相同的堆栈状态。 如果您的应用程序在后台保留内存时被系统杀死,则同样的行为也适用。操作系统会将每个活动的状态存储在堆栈中,并在需要重新创建时进行恢复(参见this post

您可以将与Activity相关的主页按钮想象为Windows操作系统术语中的关系作为“最小化”窗口按钮,后退按钮就像“关闭窗口”(x)按钮。

  

有办法防止吗?

假设您有充分的理由这样做并打破这种一致性预期行为,您可以使用活动launch modeintent flags之间的所有组合,它们将为您提供所需的行为。