Androidアプリの開発をしています。
AsyncTaskクラス内のdoInBackgroundメソッドで、
通信処理により得た値をUIを介さずに別のクラスに受け渡したいと考えているのですが、なにか良い方法ございましたらご教授下さい。
java
1@AsyncTaskクラス 2 3public class LocationGet extends AsyncTask<String, Void, String[][]> { 4 5 @Override 6 protected String[][] doInBackground(String... params) { 7 8 //通信処理 9 10 //通信処理によって取得したString型の多次元配列 11 return result; 12 } 13 14 @Override 15 protected void onPostExecute (String[][] result){ 16 callbacktask.CallBack(result); 17 18 //UIの処理 19 } 20 21 22 public void setOnCallBack(CallBackTask _cbj) { 23 callbacktask = _cbj; 24 } 25 26 27 /** 28 * コールバック用のstaticなclass 29 */ 30 public static class CallBackTask { 31 public void CallBack(String[][] result) { 32 } 33 } 34} 35 36@MainActivity 37 38public class MainActivity extends AppCompatActivity { 39 private String[][] arrays = {{},{}}; <- このフィールドを非同期処理によって得たString[][]の値に更新したい 40 41 //略 42 43@Override 44 public void onClick (View v){ 45 46 //略 47 48 LocationGet locationGet = new LocationGet(); 49 locationGet.setOnCallBack(new LocationGet.CallBackTask(){ 50 51 @Override 52 public void CallBack(String[][] result) { 53 super.CallBack(result); 54 // resultにはdoInBackgroundの返り値が入ります。 55 // ここからAsyncTask処理後の処理を記述します。 56 arrays = result; 57 } 58 59 }); 60 61 locationGet.execute(); 62 }
変更(2017.03.19):http://qiita.com/a_nishimura/items/1548e02b96bebd0d43e4を参考にコールバックを実装
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/18 13:23
2017/03/18 13:48
2017/03/18 15:25
2017/03/18 15:33