6
public class ListingFoundBeaconService 
                    extends AsyncTask<String, String, String> {

    public ListingFoundBeaconService(Context contextGiven, 
                                     JSONObject jsonParams) {
        this.contextGiven = contextGiven;
        this.jsonParams = jsonParams;
    }

    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(contextGiven);
        pDialog.setMessage("Loading list of active Beacons..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
        Log.d("onPreExecute","onPreExecute worked" );
    }

    protected String doInBackground(String... args) {}

    protected void onPostExecute(String file_url) {   
        // Two activities will need this thread so I have 
        // kept this as a separate class. Here I want to send a
        // boolean value to the parent activity to show that 
        // the task has completed or not.
    }

onPostExecute()このクラス ( ) を開始した親クラスに通知されるように、関数内で通知または完了イベント リスナーをトリガーできますListingFoundBeaconServiceか? それを行う標準的な方法は何ですか?

4

2 に答える 2

19

最善の方法は、デリゲートを呼び出すことです。AsyncTaskクラスでコンストラクターを作成し、デリゲートを作成します

デリゲート インターフェイス:

public interface TaskDelegate {
    public void taskCompletionResult(String result);
}

現在AsyncTask:

private TaskDelegate delegate;

public ListingFoundBeaconService(Context contextGiven, 
                                 JSONObject jsonParams,
                                 TaskDelegate delegate) {
    this.contextGiven = contextGiven;
    this.jsonParams = jsonParams;
    this.delegate = delegate;
}

オンpostExecute:

delegate.taskCompletionResult(result/msg/json);

メインクラスTaskDelegateで、タスクが完了したときに呼び出されるメソッドを実装および実装します。

于 2012-11-16T12:38:19.400 に答える