Автономная рабочая нить или IntentService? - PullRequest
2 голосов
/ 29 марта 2011

Я новичок в Android. Я читал несколько постов и документацию о нитях / сервисах и до сих пор не могу понять, какое решение будет наиболее подходящим для моего приложения, поэтому мне было интересно, не могли бы вы дать мне свой совет.

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

Для такой длительной задачи, как загрузка / выгрузка большого файла, которую я прочитал, наиболее подходящим способом является использование IntentService, так что даже если приложение остановлено (или уничтожено, если не хватает памяти), службы продолжают свою задачу до тех пор, пока законченный. Так как в моем приложении служба не будет остановлена ​​сама по себе (я хочу, чтобы она была остановлена ​​с помощью команды stopService), является ли служба по-прежнему лучшим способом продолжить работу? или я должен просто использовать рабочий поток, поскольку мой пользовательский интерфейс вряд ли будет убит при нормальных обстоятельствах?

Вы бы порекомендовали записать напрямую в файл или использовать sqlite?

1 Ответ

2 голосов
/ 29 марта 2011

То, что вы описали, выглядит как Service. Он работает независимо от активности, но может быть остановлен при необходимости. Потоки или как лучшее решение от Android, AsyncTask, используются для не очень длинных вещей, таких как загрузка не большого файла.

Что касается второго вопроса, это зависит. Если ваши данные довольно сложны, имеют взаимосвязи внутри и должны запрашиваться несколькими способами, то sqlite является правильным выбором. В противном случае вы можете просто записать данные в файл.

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