第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android異步任務(wù)向UI發(fā)送回調(diào)

Android異步任務(wù)向UI發(fā)送回調(diào)

qq_遁去的一_1 2019-06-06 13:08:53
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個贊

我覺得下面的方法很簡單。

我已經(jīng)聲明了一個回調(diào)接口。

public interface AsyncResponse {
    void processFinish(Object output);}

然后創(chuàng)建異步任務(wù)來響應(yīng)所有類型的并行請求

 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);
    }}

然后單擊ActivityClass中的按鈕時調(diào)用異步任務(wù)。

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.." });

            }
        });
    }}

謝謝


查看完整回答
反對 回復(fù) 2019-06-06
?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

在完成上述回答時,還可以為所做的每個異步調(diào)用自定義回退,以便每個對通用ASYNC方法的調(diào)用都將填充不同的數(shù)據(jù),這取決于您在其中放置的onTaskDone內(nèi)容。

  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);

提醒:我在“main”出現(xiàn)的主活動上使用了接口,如下所示:

public interface FragmentCallback {
    public void onTaskDone(String results);}

我的API POST Execute如下所示:

  @Override
    protected void onPostExecute(String results) {

        Log.i("TASK Result", results);
        mFragmentCallback.onTaskDone(results);

    }

API構(gòu)造函數(shù)如下所示:

 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;


    }


查看完整回答
反對 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 570 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號