이번에는 이상한 오류가 발생했습니다. 그러나 이번에는 완전히 엉망입니다. 같은 클래스에서 메서드를 호출하려고 할 때 NullPointerException이 발생합니다.동일한 클래스에서 메서드를 매개 변수없이 호출하면 NullPointerException이 발생합니다.
우선 일부 코드가 있습니다. 문제의 라인부터 시작합시다. 이 방법은 물론, 이것보다 더 긴하지만, 이것은 그것의 시작이며, 모든 관련입니다 :
protected boolean isPaused() {
return paused.get();
}
그리고 완전성 '을 위하여 :
protected synchronized void checkTransfers() {
if (isPaused())
return;
}
isPaused
간단한 게터 방법입니다 :
protected AtomicBoolean paused = new AtomicBoolean(false);
이제 문제는이 코드가 실행되는 시간의 약 50 %가, 단순히 나에게 아무 의미가없는
if (isPaused())
라인에 NullPointerException이 발생한다는 것입니다.
checkTransfers()
메서드는
isPaused()
과 같은 클래스입니다. 동료는 예를 들어 다른 스레드가 CPU 시간을 가져 와서 객체에 대한 참조를 삭제했지만 객체가 내 코드의 어디에서나 참조를 잃어 버리지 않으면 문제가 멀티 스레딩에있을 수 있다고 언급함으로써 나를 도와 주려고했습니다. 또한 :
this
은 NPE가 트리거되면 여전히 올바르게 정의됩니다.
메인 830013674640 @ "프리 오 = 5 실행 가능 하는 java.lang.Thread.State : RUNNABLE com.omines.android.communicationmanager.CommunicationManager.checkTransfers에서 (CommunicationManager을 다음
스택 트레이스이다. java : 125) at com.omines.android.communicationmanager.DownloadTask.onPostExecute (DownloadTask.java:105) at com.omines.android.communicationmanager.DownloadTask.onPostExecute (DownloadTask.java:20) android.os. AsyncTask.finish (AsyncTask.java:602) android.os.AsyncTask.access $ 600 (AsyncTask.java:156) 01 android.os.Looper.loop에서 android.os.Handler.dispatchMessage (Handler.java:99) 에서 android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:615) 에서 23,516,(Looper.java:154)at android.app.ActivityThread.main (ActivityThread.java:4945) at java.lang.reflect.Method.invokeNative (Method.java:-1) at java.lang.reflect.Method.invoke (Method.java : 511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:551) at dalvik.system .NativeStart.main (NativeStart.java:-1)
라인 125 in checkTransfers()
은 위의 if 문입니다.
아무도 이런 행동을 일으킬 수있는 아이디어가 있습니까?
방금 관련이있는 것으로 보이는 [this] (http://stackoverflow.com/questions/12070118/nullpointerexception-thrown-in-java-synchronised-method-using-sockets) 질문입니다. 그 일을 먼저 시도하고 해결할 것입니다. –
'일시 중지'를 시도 했습니까? – Fildor
지금은 가지고 있지만 차이는없는 것 같습니다. 생각해 줘서 고마워. –