活动总是被破坏

时间:2015-03-19 14:49:08

标签: android-activity

我有一个关于活动生命周期的问题。我在两个琐碎的活动A和B之间导航.A是B的父母。

   <activity
        android:name=".BActivity"
        android:label="@string/title_activity_b"
        android:parentActivityName=".AActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="de.example.AActivity" />
    </activity>

在活动类中,我自己什么都不做,除了为调试目的覆盖生命周期方法并开始下一个活动。

活动A:

public class A extends Activity {

    int itemId;

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }

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

        Log.d(TAG, " ------------- ");
        Log.d(TAG, "onCreate");
        itemId = getItemExampleItemId();

        Button goToActivityB = (Button)findViewById(R.id.goto_activity_b);
        goToActivityB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =  new Intent(AActivity.this, BActivity.class);
                intent.putExtra("extraMessage", itemId);
                startActivity(intent);
            }
        });
    }
}

活动B:

public class BActivity extends Activity {

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

如果我从A导航到B并返回,则logcat显示:

D/AActivity﹕ -------------
D/AActivity﹕ onCreate
D/AActivity﹕ onStart
D/AActivity﹕ onResume
D/AActivity﹕ onPause
D/AActivity﹕ onStop
D/AActivity﹕ onDestroy
D/AActivity﹕ -------------
D/AActivity﹕ onCreate
D/AActivity﹕ onStart
D/AActivity﹕ onResume
D/AActivity﹕ onPause
D/AActivity﹕ onStop
D/AActivity﹕ onDestroy
D/AActivity﹕ -------------
D/AActivity﹕ onCreate
D/AActivity﹕ onStart
D/AActivity﹕ onResume
D/AActivity﹕ onPause
D/AActivity﹕ onStop
D/AActivity﹕ onDestroy
D/AActivity﹕ -------------
D/AActivity﹕ onCreate
D/AActivity﹕ onStart
D/AActivity﹕ onResume
D/AActivity﹕ onPause
D/AActivity﹕ onStop
D/AActivity﹕ onDestroy
D/AActivity﹕ -------------
...

有人知道这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以通过设置:

来实现这一目标
  <activity
        android:name=".ActivityA"
        android:launchMode="singleTask" />
在您的AndroidManifest中

有关详细信息,请查看documentation