Больше тем и вопросов об изменении ориентации - PullRequest
0 голосов
/ 11 июня 2010

Когда дело доходит до потоков и изменений ориентации, кажется, что обычно нужно сделать что-то вроде этого:

public class Bwent extends Activity {
    private static Bwent instance;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        instance = this;
    }

    //...

Таким образом, если вы делаете сетевой запрос с потоком, и кто-то меняет ориентацию телефона, поток будет знать, как использовать новое действие.

Однако, возможно ли, что поток может завершиться в то время, когда Android уничтожает старую активность и создает новую?

Есть ли в процессе момент, когда поток все еще может указывать на неправильное действие или частично разрушенное действие?

Кажется, что этого не должно быть, но даже при использовании обработчика, созданного в основном потоке, у меня периодически возникают проблемы с потоком, пытающимся обновить объект, который больше не существует. Это редко, но это случается.

1 Ответ

1 голос
/ 11 июня 2010

Когда дело доходит до потоков и изменений ориентации, кажется, что обычно нужно сделать что-то вроде этого:

Это вещь, которую нужно сделать.Я не уверен, является ли это «нормальным» делом.Я сомневаюсь, что это лучшее, что можно сделать.

Однако возможно ли, что поток может закончить в то время, когда Android уничтожает старую активность и создает новую?

Да.В вашем коде нет ничего, что могло бы помешать этому.

Есть ли момент в процессе, когда поток все еще может указывать на неправильное действие или частично разрушенное действие?

Да.В вашем коде нет ничего, что могло бы помешать этому.

Вместо этого попробуйте шаблон, который я иллюстрирую здесь .Используйте AsyncTask, реализованный как статический внутренний класс или открытый класс.Пусть это будет тот, кто знает об Деятельности.Пусть он использует Активность только в doPostExecute() (или, возможно, onPublishProgress()).Исходя из того, как работают AsyncTask и Handler, мы понимаем, что AsyncTask всегда будет иметь Activity в этих методах на основном потоке.

Некоторые из этих вещей обсуждалось недавно .

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