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 件のコメント:
コメントを投稿