3 回答

TA貢獻1804條經驗 獲得超8個贊
為什么不調用處理該值的方法?
public class MyClass extends Activity {
private class myTask extends AsyncTask<Void, Void, Void> {
//initiate vars
public myTask() {
super();
//my params here
}
protected Void doInBackground(Void... params) {
//do stuff
return null;
}
@Override
protected void onPostExecute(Void result) {
//do stuff
myMethod(myValue);
}
}
private myHandledValueType myMethod(Value myValue) {
//handle value
return myHandledValueType;
}
}

TA貢獻1816條經驗 獲得超4個贊
那onPostExecute()是為了什么 它在UI線程上運行,您可以將結果從那里傳遞到屏幕(或其他需要的位置)。在最終結果可用之前,它不會被調用。如果您想獲得中間結果,請查看onProgressUpdate()

TA貢獻1946條經驗 獲得超4個贊
最簡單的方法是將調用對象傳遞給異步任務(如果愿意,可以構造它):
public class AsyncGetUserImagesTask extends AsyncTask<Void, Void, Void> {
private MyImagesPagerFragment mimagesPagerFragment;
private ArrayList<ImageData> mImages = new ArrayList<ImageData>();
public AsyncGetUserImagesTask(MyImagesPagerFragment imagesPagerFragment) {
this.mimagesPagerFragment = imagesPagerFragment;
}
@Override
public Void doInBackground(Void... records) {
// do work here
return null;
}
@Override
protected void onPostExecute(Void result) {
mimagesPagerFragment.updateAdapter(mImages);
}
}
并在調用類(您的活動或片段)中執行任務:
public class MyImagesPagerFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
AsyncGetUserImagesTask mGetImagesTask = new AsyncGetUserImagesTask(this);
mGetImagesTask.execute();
}
然后onPostExecuteMethod將在您喜歡的原始類上調用任何方法,例如:
public void updateAdapter(List<ImageData> images) {
mImageAdapter.setImages(images);
mImageAdapter.notifyDataSetChanged();
}
}
添加回答
舉報