rickul
rickul

Reputation: 1044

Activity always destroyed

I have an issue about activity lifecycle. I navigate between two trivial activities, A and B. A is the parent of 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>

In the activity classes themself i do absolutely nothing, except overriding the lifecycle methods for debug purposes and starting the next activity.

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);
            }
        });
    }
}

Activity B:

public class BActivity extends Activity {

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

if I navigate from A to B and back, the logcat shows:

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﹕ -------------
...

Has anybody an idea whats the problem?

Upvotes: 1

Views: 261

Answers (1)

A Honey Bustard
A Honey Bustard

Reputation: 3493

You can for example achieve that by setting :

  <activity
        android:name=".ActivityA"
        android:launchMode="singleTask" />

in your AndroidManifest.

For more Info look at the documentation

Upvotes: 1

Related Questions