sqlite에 데이터를 저장 한 안드로이드 응용 프로그램이 있습니다. 데이터베이스 테이블의 경로 목록을 유지합니다. 화면의 활성 경로에 데이터를 표시합니다/프로세서를 릴리스하려면 서비스 내부의 정적 목록을 사용합니다. 프로세서를 릴리스하려면 서비스 내부의 정적 목록을 사용합니다. 서버에서 데이터를 수신 할 때 목록을 변경합니다.정적 varialble android 서비스를 제거
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();
내 응용 프로그램은 일반적으로 대신 데이터 테이블에 대한 SQL 쿼리의 routeTaskList를 사용합니다.
이제 작업이 안드로이드 개발 표준을위한 서비스를 변경합니다. 정적 필드를 제거하고 이제 인 텐트 (startService (intent))를 통해 서비스를 실행합니다. routeTaskList 객체에 대한 정적 setter 및 getter를 제거 할 수 있습니까?
변수'routeTaskList'에서'static' 속성을 제거하고 그것을위한 setter/getter에서'static' 속성을 제거하십시오. 이제 새로운 NetworkService() 객체를 인스턴스화하고 객체에 getter와 setter를 호출 할 수 있습니다. –
하지만 서비스를 여러 번 시작해야합니다. 정적 객체는 예를 들어 하나입니다. statService 이후에는 다른 객체가 생깁니다. –
@ j.seashell 안드로이드'Service'를'new'로 인스턴스화 할 수는 없습니다. Android 프레임 워크 만 Android 구성 요소를 인스턴스화 할 수 있습니다! –