Android App活动生命周期

时间:2016-03-23 23:41:21

标签: android android-activity lifecycle

我有一个令我讨厌的问题。我做了一个有两个活动炎的应用程序。第一个活动有一个按钮,当您按下按钮时,它会启动第二个活动。我在第二个活动中按下主页按钮退出应用程序,当我重新打开应用程序时,活动启动它是第一个。我想启动应用程序关闭的活动,在这种情况下是第二个。我该怎么办?

public class FirstActivity extends ActionBarActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        View bub = findViewById(R.id.card_ub);



        bub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(FisrtActivity.this, SecondActivity.class);
                startActivity(intent1);

            }
        });




    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button



        }
        return super.onOptionsItemSelected(item);
    }
}

第二项活动 -

public class SecondActivityActivity extends ActionBarActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        View bub = findViewById(R.id.card_ub);



        bub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(FSecondActivity.this, FirstActivity.class);
                startActivity(intent1);

            }
        });




    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button



        }
        return super.onOptionsItemSelected(item);
    }
}

清单文件 -

    <application
        android:allowBackup="true"
        android:icon="@drawable/dc"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".FirstActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <activity android:name=".SecondActivity"
            android:label="Example"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme">
        </activity>

    </application>

</manifest>

2 个答案:

答案 0 :(得分:0)

检查开发者页面以更好地了解backstack。

http://developer.android.com/guide/components/tasks-and-back-stack.html

只需调用startactivity(new Intent(FirstActivity.this,SecondActivity.class)。如果你在开始新活动时不调用finish()。如果你使用CLEAR_FLAG这样的意图标志,它会在开始第二个活动时破坏你的活动

答案 1 :(得分:0)

如果您设置了“不要保留后台进程”,请检查您的手机设置。 在您的情况下,您的电话系统似乎总是在输入背景时终止您的应用程序。

因此,如果您的手机始终如此,您可以做两件事:

  1. 关闭此设置。

  2. 或者,您可以在SecondActivity中保存活动状态,例如onPause / onStop,让您的应用程序知道您当前的状态是SecondActivity。

  3. 下次打开应用程序时,请检查FirstActivity中的应用程序状态,并将状态恢复为SecondActivity。