2016-12-14 2 views
0

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

public class NetworkService extends Service{ 

    private static NetworkService instance = null; 

    private static List<RouteTask> routeTaskList; 
    private static LoadRoutesTask loadRoutesTask; 

    private static RouteChangedListener rtListener ; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     if (instance == null) { 
      instance = this; 

      NetworkManager.updateNetworkInfo(this); 
      NetworkManager.setNetworkListener(this);  
     } 
    } 

    public static Context getCurrentContext() { 
     return instance; 
    } 

    public static boolean hasInstance() { 
     return instance != null; 
    } 

    public static void setRouteTaskList(List<RouteTask> rtList) 
    {  
     routeTaskList = rtList ;   
    } 

    public static List<RouteTask> getRouteTask(){ 
     return routeTaskList; 
    } 

} 

В приложении я могу установить значение,

NetworkService.setRouteTaskList(list); 

или получить значение:

List<RouteTask> = NetworkService.getRouteTaskList(); 

Мое приложение обычно используют routeTaskList вместо SQL-запроса для таблицы данных.

Задача теперь заключается в изменении службы для стандартов разработки Android. Я удалил статическое поле и теперь, я запускаю службу через намерения (startService (намерение)). Как удалить статический сеттер и getter для объекта routeTaskList?

+0

Удалите свойство 'static' из переменной' routeTaskList' и удалите свойство static из setter/getter для него. Теперь вы можете создать экземпляр объекта 'new NetworkService()' и вызвать геттер и сеттер на вашем объекте –

+0

, но я должен начать сервис несколько раз. статическим объектом является, например, один. после statService у него будет другой объект –

+0

@ j.seashell. Вы абсолютно не можете создать экземпляр Android 'Service', используя' new'. Только Android-платформа может создавать компоненты Android! –

ответ

0

Вы можете предоставить Service список заданий в качестве дополнительных услуг в Intent, которые вы используете в вызове startService(). Это заменяет ваш статический сеттер.

Получить список задач сложнее. Опции:

  1. Вы можете использовать AIDL и привязку к Service и затем вызвать метод, чтобы получить список задач
  2. Вы могли бы назвать startService() с Intent, который просит о Service транслировать список задач. В Service.onStartCommand() вы можете отправить широковещательную рассылку Intent, которая содержит список задач в качестве дополнительных функций.
  3. Вы можете получить Service отправьте stickyIntent, который содержит список задач при каждом изменении списка. Затем ваше приложение будет использовать вызов registerReceiver(), чтобы прочитать самую недавно отправленную липкую трансляцию.
Смежные вопросы