Android: Восстановление активной активности во время возобновления приложения

голоса
6

У меня есть два мероприятия под управлением: mainActivity и childActivity . Всякий раз , когда пользователь нажимает на кнопку в mainActivity , то childActivity запускается. То , что я хочу сделать это:

При активной деятельности является childActivity и пользователь нажимает на кнопку домой , а затем повторно запустить приложение , я хочу видеть childActivity вместо mainActivity , которая запускается.

У меня было несколько предложений на самом деле работают обходные. Я пытался манипулировать OnStart, onRestart, onResume, OnStop, OnDestroy события. Но, они не в полной мере решить эту проблему. Там должен быть умным способом там. Спасибо.

Редактировать:

Спасибо за ответ, Soonil. Случай вы сказали, что происходит, когда активность вызывается из окна в последнее время деятельности. (Открывается окно при длительном нажатии на кнопку домой) Однако; Это не происходит, когда вы открываете его с главного экрана. (Например, открытие от начала) Я не думаю, что мой код имеет определенную проблему для создания этой ошибки. Потому что, я создал тестовый проект и попытался автономна, прежде чем отправить вопрос и столкнулся с той же проблемой. Во всяком случае, вот тестовый код:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle(MainActivity);

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle(ChildActivity);

    }
}
Задан 07/04/2009 в 08:04
источник пользователем
На других языках...                            


2 ответов

голоса
3

EDIT : Нашел решение проблемы несколько случайно сегодня! Смотрите этот отчет об ошибке . Это объясняет вашу проблему точно. Поэтому я не мог воспроизвести проблему, я никогда не Eclipse , запустить приложение напрямую. Я использую Eclipse , чтобы установить приложение , а затем запустить его самостоятельно.


Это уже по умолчанию для Android приложений, никаких специальных приемов не требуется для достижения этой цели. Я удивлен приложение не демонстрирует такое поведение. Каждый Android приложение поддерживает стек активность, буквально стек LIFO деятельности. Эти действия могут быть дополнительно сгруппированы в задачи, но 99% от рутинных приложений никогда не должны ничего знать о задачах в моем опыте.

При нажатии на кнопку домой, весь стек приложение помещается на задний план. В то время как в фоновом режиме, он может быть убит за проблемы памяти в любое время, но если не так много времени, прежде чем истечет его восстановления, он вообще не убит и не должен быть воссоздано. При выборе приложения снова, стек (или более точно, только верхний элемент в стеке) восстанавливается.

Если ваше приложение не демонстрирует такое поведение, я подозреваю, что это что-то делать с тем, как вы начинаете mainActivity и childActivity и любые дополнительные Intent флаги, которые вы можете использовать. Любой шанс, что вы можете оставить фрагменты кода, как вы начинаете mainActivity и childActivity?

Ответил 07/04/2009 в 15:50
источник пользователем

голоса
-1

Я вернулся и протестирован с подобным приложением, и даже тогда, когда процесс вытесняется из памяти ChildActivity воссоздается автоматически, как говорит Soonil. Вы видите это на эмуляторе или на реальном устройстве?

Если запустить приложение и посмотреть LogCat, вы должны увидеть что-то вроде следующего после запуска вашего приложения, а затем откройте ChildActivity и нажмите кнопку Home, а затем начать свою деятельность еще раз:

Начиная активность: Намерение {действие = android.intent.action.MAIN категории = {android.intent.categroy.LAUNCHER} флаги = ... комп = {com.yourpackagename.MainActivity}} Начало прок для деятельности yourpackagename.ChildActivity: PID = х = у UID и GID = {} Отображаемые активность /.ChildActivity

Не могли бы вы опубликовать вывод LogCat, когда вы не видите поведение вы ожидаете?

Ответил 08/04/2009 в 13:08
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more