38

何らかの理由onPostExecute()で、終了後に呼び出されませんAsyncTask

私のクラス宣言:

public class setWallpaperForeground extends AsyncTask<String, Integer, Boolean>

私の onPostExecute():

protected void onPostExecute(Boolean result)

すべて正常に動作doInBackground()し、正常に完了してブール値を返しますが、終了するだけです。

ありがとう

4

8 に答える 8

56

メソッドでタスクを開始しましたexecute()か? を呼び出すだけでは、onPostExecuteは実行されませんdoInBackground

于 2010-08-31T07:35:34.700 に答える
48

UI スレッドで AsyncTask を作成しましたか? また、 onPostExecute() メソッドに @Override アノテーションを追加して、正しく宣言したことを確認してください。

于 2010-08-31T06:35:21.093 に答える
30

別の厄介な間違いを見つけた/作った:

パラメータがonPostExecute(Param param)定義したものと一致extends AsyncTask<...,...,Param>せず、アノテーションを使用しなかった場合、@Overrideアノテーションは実行されず、Eclipse からの警告は表示されません。

自分へのメモ: 常に@Overrideアノテーションを使用すれば、Eclipse が役に立ちます。

すべての名前付きミスを回避する別の簡単な方法:

エクリプスで:Right-click in code > Source > Override/Implement Methods

于 2012-06-20T20:50:46.923 に答える
5

同じ問題が発生し、これらの回答のどれも役に立たなかった後、UI スレッドがブロックされていることがわかりました (私は a を使用しましたCountDownLatch.await())。そのためonPostExecute()、UI スレッドによって呼び出されるはずのメソッドが呼び出されませんでした。

于 2015-11-24T01:36:52.313 に答える
3

この同じエラーにつながる可能性のある別の厄介な間違いを犯しました。AsyncTask を定義して呼び出すと、呼び出すのではなく呼び出しexecuteていたdoInBackground

new AsyncTask<String,Void,Void>() {
    ....
}.doInBackground("parameter");

それよりも

new AsyncTask<String,Void,Void>() {
    ....
}.execute("parameter");
于 2017-08-02T00:39:14.603 に答える