有一个android应用程序将数据存储到sqlite中。我在数据库表中保留了一个路由列表。我在屏幕上显示活动路由上的数据/为了释放处理器,我在服务中使用静态List。为了释放处理器,我在服务中使用静态List。我从服务器接收数据时更改列表。
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(intent))。如何删除routeTaskList对象的静态清除程序和getter?
答案 0 :(得分:0)
您可以在Service
来电Intent
中为startService()
提供任务列表作为额外内容。这将取代您的静态setter。
获取任务列表更复杂。选项:
Service
,然后调用方法来获取任务列表startService()
致电Intent
,要求Service
广播任务列表。在Service.onStartCommand()
中,您可以发送广播Intent
,其中包含作为附加内容的任务列表。Service
发送粘性广播Intent
,其中包含每次更改列表时的任务列表。然后,您的应用会使用registerReceiver()
电话来阅读最近发送的粘性广播。