Кнопка "Назад" возобновляет деятельность вместо перехода назад

В моем приложении есть ошибка, которую я не могу выяснить. Есть три вида деятельности: HomeActivity - A, TestActivity - B и ResultActivity - C,

Деятельность A катера B нормальным образом

Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);

Тогда деятельность B катера C таким же образом. когда C сделано это восходит к A очистка стека, как это

Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Теперь процесс можно повторять до бесконечности, без каких-либо проблем. Тем не менее, у меня есть ярлык, который позволяет пользователю начать B от C с помощью A отправив параметр в Aintent.putExtra("startTest", true); который A использует для начала B, Теперь, что происходит, если я нажимаю кнопку "Назад", находясь в деятельности B, действие возобновляется вместо возвращения к A,

Стек активности, кажется, просто отлично в соответствии с adb shell dumpsys activity:

Activity stack:
* TaskRecord{408276f0 #60 A com.company.app}
clearOnBackground=false numActivities=3 rootWasReset=true
affinity=com.company.app
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.company.app/.LoginActivity bnds=[120,241][240,391]}
realActivity=com.company.app/.LoginActivity
lastActiveTime=756688148 (inactive for 6s)
* Hist #12: HistoryRecord{40ab2248 com.company.app/.TestActivity}
    packageName=com.company.app processName=com.company.app
    launchedFromUid=10109 app=ProcessRecord{4089aed0 16527:com.company.app/10109}
    Intent { cmp=com.company.app/.TestActivity }
    frontOfTask=false task=TaskRecord{408276f0 #60 A com.company.app}
    taskAffinity=com.company.app
    realActivity=com.company.app/.TestActivity
    base=/data/app/com.company.app-1.apk/data/app/com.company.app-1.apk data=/data/data/com.company.app
    labelRes=0x0 icon=0x7f02000b theme=0x103000d
    stateNotNeeded=false componentSpecified=true isHomeActivity=false
    configuration={ scale=1.0 imsi=242/1 loc=nb_NO touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=22}
    launchFailed=false haveState=false icicle=null
    state=RESUMED stopped=false delayedResume=false finishing=false
    keysPaused=false inHistory=true launchMode=0
    fullscreen=true visible=true frozenBeforeDestroy=false thumbnailNeeded=false idle=true
    waitingVisible=false nowVisible=true
* Hist #11: HistoryRecord{40a548e8 com.company.app/.HomeActivity}
    packageName=com.company.app processName=com.company.app
    launchedFromUid=10109 app=ProcessRecord{4089aed0 16527:com.company.app/10109}
    Intent { flg=0x4000000 cmp=com.company.app/.HomeActivity }
    frontOfTask=false task=TaskRecord{408276f0 #60 A com.company.app}
    taskAffinity=com.company.app
    realActivity=com.company.app/.HomeActivity
    base=/data/app/com.company.app-1.apk/data/app/com.company.app-1.apk data=/data/data/com.company.app
    labelRes=0x0 icon=0x7f02000b theme=0x103000d
    stateNotNeeded=false componentSpecified=true isHomeActivity=false
    configuration={ scale=1.0 imsi=242/1 loc=nb_NO touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=22}
    launchFailed=false haveState=true icicle=Bundle[mParcelledData.dataSize=1192]
    state=STOPPED stopped=true delayedResume=false finishing=false
    keysPaused=false inHistory=true launchMode=0
    fullscreen=true visible=false frozenBeforeDestroy=false thumbnailNeeded=false idle=true

Неважно, сколько раз я нажимаю кнопку возврата. Стек остается прежним, а активность B продолжает перезапуск.

Теперь к еще более странной части: если я дважды коснусь кнопки "назад", она действительно вернется в стек, давая мне активность A,

У меня нет особого нажатия кнопки "назад", и, поскольку она работает хорошо, в случае 1, но не в случае 2, я действительно потерян. Поиски не принесли мне ничего, поэтому любая оценка будет оценена.

РЕДАКТИРОВАТЬ Вот что я думаю, что соответствующие биты из деятельности

2 ответа

Решение

Как вы сделали нормальный сценарий сложный. Если у вас есть использование startActivityForResult() а также onActivityResult() с необходимыми флагами и условиями в вашей деятельности, то выше проблем не возникает..

Причина:

Как я сомневаюсь, когда вы нажимаете кнопку "Назад" из B Activity его вызов повторно protected void onBackendStarted() HomeActivity И ваша деятельность B продолжает перезапуск..

Обновить:

Вы должны удалить startTest из Intent, как только начнется действие B. Так что в следующий раз он не будет запускаться повторно.

Что-то вроде:

getIntent().removeExtra("startTest"); в onBackendStarted(),

Попробуй вот так..

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        System.gc();
        Intent I = new Intent(EditProfile.this, SettingActivity.class);
        startActivity(I);
        finish();
    }
Другие вопросы по тегам