Написание объектов из потока в Android - PullRequest
1 голос
/ 22 июля 2010

У меня есть игровой объект, который я сохраняю таким образом в OnPause ()

try {
   final ObjectOutputStream os = new ObjectOutputStream(openFileOutput(gameName + ".sav", 0));
   os.writeObject(gameObject);
   os.reset();
  } catch (final Exception e) {
   e.printStackTrace();

}

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

Первый openFileOutput доступен только в моей деятельности. Я обошел это, передав ObjectOutputStream потоку. После этого я смог сохранить объект, но позже, когда попытался перезагрузить компьютер, я получил java.io.EOFExeception.

У кого-нибудь есть хороший шаблон для записи объектов в файл из потока?

1 Ответ

0 голосов
/ 23 июля 2010

Вот, пожалуйста: http://developer.android.com/guide/appendix/faq/commontasks.html#threading

Просто переместите свой код в метод run () потока и вызовите startLongRunningOperation () в onPause () вашей деятельности.

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