AsyncTaskで取得してきたデータをアクティビティに引き渡す方法
stackoverlowで良いサンプルがあったのですメモ。Activity外の外出個別クラスから、Activityクラスへデータを返す方法を探してたら、データを、返すんではなく外出しクラスへActivityを受け渡すやり方。
つまり、件名とはやってることは違いますが最終的やりたいことは同じ。
Asynctask側のコンストラクタにActivity自体を渡してます。それでAsynctask側のメソッドでActivity側のメンバlistをAsynctask側から更新する。
一般的なgetやAWS S3とかDynamodbのデータをAsynctaskでとってきたあと、Activityに結果を、反映する用途で使えますね。
・YourActivity.java
public class YourActivity extends Activity { private List<String> list = new ArrayList<String>(); public void onCreate(Bundle state) { //... } public void setList(List<String> list) { this.list = list; } private void fireYourAsyncTask() { new LoadStringsAsync(this).execute(); } }
・LoadStringsAsync.java
public class LoadStringsAsync extends AsyncTask<Void, Void, List<String>> { List<String> str; private YourAcitivity activity; public LoadStringsAsync(YourAcitivity activity) { this.activity = activity; } @Override protected List<String> doInBackground(Void... arg0) { } @Override protected void onPostExecute(List<String> str) { super.onPostExecute(events); activity.setList(str); } }
android - AsyncTask return List to Activity - Stack Overflow