Сервис Android должен хранить данные для запроса от других классов - PullRequest
2 голосов
/ 02 декабря 2011

У меня служба работает в фоновом режиме. Он получает некоторые строки по IP. Он должен обрезать их и согласовать с некоторыми переменными.

Вот я и подумал:

public class Listener extends Service{
public void main(){
//fetch and preprocess data
data=fetched_string;
}

public String data=null;
public String getData(){return data;}

}

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

А может, есть более элегантное решение для андроида?

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Если ваша служба работает, когда ваше приложение работает, то есть не вызывается BroadcastReceiver в другом процессе, расширьте класс Application, , показанный здесь , и пусть ваша служба установит их. Тогда к глобальной переменной могут обращаться другие классы в вашем приложении. В противном случае попросите службу записать их в базу данных Sqlite и получить к ним доступ оттуда.

0 голосов
/ 02 декабря 2011

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

Для хранения данных при перезапусках доступно 3 варианта - общие предпочтения (для небольших объемов данных) - sqlite, если их много, данные не очень структурированы и вам действительно нужна сортировка / запрос - сериализовать их в JSONс выбранным решением для привязки данных (самостоятельная реклама Shameles на: https://github.com/ko5tik/jsonserializer) и сохраните его в файле, если данные структурированы, и вы хотите иметь объекты

...