2019 Aug. 18.
2019 Aug. 17.
(参考サイト)
https://teratail.com/questions/195681
https://akira-watson.com/android/asynctask.html
(MyActivity.java)
2019 Aug. 17.
(参考サイト)
https://teratail.com/questions/195681
https://akira-watson.com/android/asynctask.html
(MyActivity.java)
public class MyActivity extends AppCompatActivity {
    Button buttonOK;
    /*
     * MyAsyncTask内のListenerインターフェースを呼び出す
     */
    private MyAsyncTask.Listener createListener() {
        return new MyAsyncTask.Listener() {
            /*
             * Listenerインターフェースの抽象メソッドonSuccessにコードを実装
             */
            @Override
            public void onSuccess(String result) {
                CODES_TO_RUN_AFTER_MyAsyncTask;
            }
        };
    }
    /*
     * buttonOKがタップされたらMyAsyncTaskが呼び出される
     */
    buttonOK.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myAsyncTask = new MyAsyncTask();
            /*
             * MyAsyncTask内のListenerインターフェース型変数listenerに
             * createListener()をセットする
             *     createListener()ではListenerインターフェースの
             *     抽象メソッドonSuccessの実装コードが記述されている。
             *     MyAsyncTask内で"listener.onSuccess()"によって実装コードを実行できる。
             */
            myAsyncTask.setListener(createListener());
            myAsyncTask.execute();
        }
    });
}
(MyAsyncTask.java)public class MyAsyncTask extends AsyncTask{ private Listener listener; /* * 抽象メソッドonSuccess()は、MyAsyncTask内で実行させたい処理。 * 抽象メソッドonSuccess()は、MyAsyncTaskを呼び出すMyActivity内の * createListener()内で実装されている。 */ interface Listener { void onSuccess(String str); } void setListener(Listener listener) { this.listener = listener; } @Override protected String doInBackground(Void... params) { } @Override protected void onPostExecute(String result) { super.onPostExecute(result); CODES_TO_EXECUTE_onPostExecute; /* * onSuccess()メソッド実行 */ listener.onSuccess(result); return; } } 
 
0 件のコメント:
コメントを投稿