내 앱에 문제가 있습니다. 내 응용 프로그램은 실제로 서비스입니다. 나는 Main Service를 확장했다. HandlerThread 루퍼를 얻으려면 개인 루퍼 루퍼 변수가있다. onCreate
함수에서 위치 관리자, 위치 수신기 및 HandlerThread (루퍼 변수를 루퍼로 설정 함)를 초기화 한 다음 requestLocationUpdates
을 루퍼 변수를 루퍼로 전달하려고합니다. 오류가 발생했습니다Android 앱이 다운 됨 (looper = null)
09-22 17:30:24.069: E/AndroidRuntime(1414): Caused by: java.lang.IllegalArgumentException: looper==null
이 HandlerThread에 다른 작업을해야합니까? 어쩌면 시작 하시겠습니까?>>
코드가 길기 때문에 문제를 해결하는 데 적절한 부분을 알지 못하기 때문에 붙여 넣지 않습니다. 따라서 필요한 코드를 전달하고 싶습니다. (HandlerThread? 그 밖의 것이 있습니까?)
감사합니다.
** EDIT * *
좋아,에서 onCreate 함수 :
public void onCreate() {
super.onCreate();
Log.d("Service", "Service onCreate starts");
running = true;
lt = new LooperThread("GPSIntentLT");
serviceLocationM = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
serviceLocationL = new MyLocationListener();
requestUpdates(serviceLocationL);
Log.d("Service", "Service onCreate ends");
}
requestUpdates 함수 (위라고하는 에러 표시가)
private void requestUpdates(LocationListener listener)
{
Log.d("Service", "requestUpdates starts");
serviceLocationM.removeUpdates(listener);
flag = displayGpsStatus();
switch(flag)
{
case 0:
Log.d("Service", "No Location Provider");
break;
case 1:
Log.d("Service", "Network Provider");
serviceLocationM.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10, 25, listener, theLooper);
break;
case 2:
Log.d("Service", "GPS Provider");
serviceLocationM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 25, listener, theLooper);
break;
}
Log.d("Service", "requestUpdates ends");
}
그리고 HandlerThread :
private class LooperThread extends HandlerThread{
public LooperThread(String name) {
super(name);
Log.d("Service", "LooperThread constructor starts");
theLooper = getLooper();
Log.d("Service", "LooperThread constructor ends");
}
@Override
public void run() {
super.run();
Log.d("Service", "LooperThread run called");
}
}
그리고 마지막에
는이 응용 프로그램에 대한 로그 캣이 :09-22 18:21:47.997: D/Service(386): Service onCreate starts
09-22 18:21:47.997: D/Service(386): LooperThread constructor starts
09-22 18:21:48.007: D/Service(386): LooperThread constructor ends
그래서 requestLocationUpdates 기능에 내려 가서 않습니다, 그것이 충돌 2.3.3에 2.2 에뮬레이터에서 발생 프로세스를 죽여 전체 에뮬레이터 (?).
적어도 onCreate 클래스와 핸들러 스레드의 코드를 게시해야합니다. – Jems
@Jems가 코드를 추가했습니다. – Ziker
왜 HandlerThread를 확장하고 있습니까? – pskink