2016-06-23 5 views
-1

AsyncTaskコールバックがどのように機能するかを理解しようとしています。複数の値を返すAsyncTaskコールバック関数を実装しますか?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    MyAsyncTask AsyncTask = new MyAsyncTask(arg1,arg2,arg3).execute(); 
} 

そして、これは私のAsyncTaskクラスである:これは私のMainActivityは、これまでどのように見えるかです

public class MyAsyncTask extends AsyncTask<String, Void, Result> { 
    private AsyncListener listener; 

    public MyAsyncTask(AsyncListener listener) { 
     this.listener = listener; 
    } 

    public MyAsyncTask() { 

    } 

    @Override 
    protected Result doInBackground(String... strings) { 
     return null; 
    } 

    @Override 
    public void onPostExecute(Result result) { 
     listener.onTaskCompleted(); 
    } 

    public interface AsyncListener{ 
     void onTaskCompleted(); 
    } 
} 

これは私が思いついただけで骨格構造です。私は、AsyncTask内に複数の関数を呼び出すことを実装したいと思っています。これは、SharedPreferenceを使ってアプリ起動カウンタを設定する、AdMob広告を初期化するなどです。それを実装する最良の方法は何でしょうか?

+0

'publishProgress()'と 'onProgressUpdate()'を使うことができます。 https://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate(Progress ...) –

+0

これは私の特定の質問に関して私を助けませんか? – AlexioVay

+0

あなたの質問はあまりにも広すぎます。 – Creos

答えて

2

アクティビティの使用に3つのパラメータがあるため、構造体が完全に正しくないが、AsyncTaskが何らかの結果でインタフェースリスナーに「コールバック」する必要がある。

@Override 
public void onPostExecute(Result result) { 
    if (listener != null) { 
     listener.onTaskCompleted(result); 
    } 
} 

例えば

だから、あなたはパラメータを受け入れるためのインタフェースメソッドを更新する必要があります。

次に、そのインターフェイス&メソッド(または匿名クラス)の実装をAsyncTaskに渡す必要があります。コールバックがあります。

複数のメソッドの呼び出しに関して、さまざまなタスクに対して複数のコールバックを使用できますが、実際には最終目標に依存します。

関連する問題