2017-03-03 3 views
0

私はAsyncTaskを終了しようとしていますが、アプリケーションが終了すると次の例外が発生します。どこが間違っていますか?これは私のコードです - 私はvariable-を宣言AsyncTaskを停止する際の例外

onDestroy-

@Override 
public void onDestroy() { 
    Log.v("SERVICE", "Service killed"); 
    mTask.cancel(true); 
    super.onDestroy(); 
} 

3月3日08で、その後

private DownloadFileAsync mTask; 

:57:41.200:E/AndroidRuntime (22678):java.lang.RuntimeException:サービスを停止できません[email protected]:java.lang.NullPointerException:仮想メソッド 'bを呼び出しようとしていますoolean com.exe.shark.NSOMUHBroadcastService $ DownloadFileAsync.cancel nullオブジェクト参照上(ブール値)」

+0

'mTask'はnullです。これを参照してくださいhttp://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – arjun

+1

[NullPointerExceptionとは何か、それを修正する方法は? ](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –

答えて

0

mTask nullでない

@Override 
public void onDestroy() { 
    Log.v("SERVICE", "Service killed"); 
    if(mTask != null) { 
     mTask.cancel(true); 
    } 
    super.onDestroy(); 
} 
+0

それでも実行し続けます –

0

にそれはあなたのAsyncTaskがインスタンス化されていないことは可能ですかどうかをチェックしてみてくださいまたはあなたのActivityが破壊されるまでに実行してください。 mTaskがnullでないことを確認する必要があります。

またmTaskはまだActivitymTask.getStatus() == AsyncTask.Status.RUNNINGを呼び出すことによって破壊された時点で実行されているかどうかを確認することをお勧めします。

0

mTaskが設定されていないため、nullです。 AsyncTaskは、次のような何かを起動するには:ちょうど、タスク変数を宣言するだけでは十分ではない

DownloadFileAsync mTask = new DownloadFileAsync (...parameters vary...); 
mTask.execute(...parameters vary...); 

- 上記のように、明示的に開始する必要があります。詳細は、documentationを参照してください。

mTask.cancel(true)は、タスク内のキャンセルフラグをチェックして正常に終了しない限り、実際にはキャンセルされませんが、プログラムする必要があります。 「タスクのキャンセル」は、上で参照されているドキュメントです。

関連する問題