остановить или обновить активность приложения - PullRequest
0 голосов
/ 12 августа 2010

У меня есть кнопка ПУСК и СТОП на главном экране приложения. Есть некоторые GUI и потоки, которые создаются при нажатии на START. Когда я нажимаю на стоп, я хочу, чтобы все было остановлено, и действие должно вернуться в исходное состояние. В состояние, которое точно так же, как при запуске (когда мы нажали на значок приложения в мобильном телефоне). Можно ли сделать это? Я попытался с finish (), это убило приложение и вышло. Я не хочу выходить из главного экрана. скорее, после нажатия кнопки STOP я хочу, чтобы приложение вернулось в исходное или родное состояние. Благодарю.

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Как ваши темы? Это ванильные нити или подклассы AsyncTask?

Если это экземпляры объекта AsyncTask, вы можете использовать метод cancel() для его отмены, а затем внутри метода doInBackground() вы можете проверить метод isCancelled(), чтобы увидеть, действительно ли он был отменен и затем выйдите изящно.

Псевдокод ниже:

private YourTask taskRef;

public void btnStartHandler() {
    taskRef = new YourTask();
    taskRef.execute();
}

public void btnStopHandler() {
    taskRef.cancel();
}

и затем в вашей AsyncTask:

public Void doInBackground(Void... arg0) {
    // Background loop start
    if (this.isCancelled()) {
        return;
    }
    // Background loop continue...
}

Если вы используете потоки, вы можете прервать их, поймать исключение и обработать его там. Кроме того, вы можете создать метод, который вы вызываете из onCreate() с именем initApp() или что-то, что инициализирует все. Вы также можете использовать этот initApp() из обработчика нажатия кнопки STOP, чтобы сбросить значения до значений по умолчанию при запуске.

0 голосов
/ 13 августа 2010

Вы можете перезапустить занятие с помощью finish() и затем вызвать startActivity(getIntent());. Это эффективно перезапустит вашу деятельность и переведет ее в состояние по умолчанию, независимо от того, как оно было запущено.

Перед этим обязательно отмените все потоки или AsyncTasks, как предложено TJF (это можно и нужно делать при перегрузке onDestroy).

Дополнительную информацию о возобновлении активности и обсуждение плюсов и минусов см. В следующем вопросе: Перезагрузить активность в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...