Android異步任務(wù)向UI發(fā)送回調(diào)我有以下異步任務(wù)類,它不在活動中。在該活動中,我正在初始化異步任務(wù),并希望異步任務(wù)向我的活動報告回調(diào)。有可能嗎?還是異步任務(wù)必須與活動位于同一個類文件中?protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
caller.sometextfield.setText("bla");}像這樣嗎?
3 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊
public interface AsyncResponse { void processFinish(Object output);}
public class MyAsyncTask extends AsyncTask<Object, Object, Object> { public AsyncResponse delegate = null;//Call back interface public MyAsyncTask(AsyncResponse asyncResponse) { delegate = asyncResponse;//Assigning call back interfacethrough constructor } @Override protected Object doInBackground(Object... params) { //My Background tasks are written here return {resutl Object} } @Override protected void onPostExecute(Object result) { delegate.processFinish(result); }}
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { Button mbtnPress = (Button) findViewById(R.id.btnPress); mbtnPress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyAsyncTask asyncTask =new MyAsyncTask(new AsyncResponse() { @Override public void processFinish(Object output) { Log.d("Response From Asynchronous task:", (String) output); mbtnPress.setText((String) output); } }); asyncTask.execute(new Object[] { "Youe request to aynchronous task class is giving here.." }); } }); }}

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊
Main.FragmentCallback FC= new Main.FragmentCallback(){ @Override public void onTaskDone(String results) { localText.setText(results); //example TextView } };new API_CALL(this.getApplicationContext(), "GET",FC).execute("&Books=" + Main.Books + "&args=" + profile_id);
public interface FragmentCallback { public void onTaskDone(String results);}
@Override protected void onPostExecute(String results) { Log.i("TASK Result", results); mFragmentCallback.onTaskDone(results); }
class API_CALL extends AsyncTask<String,Void,String> { private Main.FragmentCallback mFragmentCallback; private Context act; private String method; public API_CALL(Context ctx, String api_method,Main.FragmentCallback fragmentCallback) { act=ctx; method=api_method; mFragmentCallback = fragmentCallback; }
- 3 回答
- 0 關(guān)注
- 570 瀏覽
添加回答
舉報
0/150
提交
取消