首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android AsyncTask 結果回調 Activity:接口回調模式實現解耦

     編輯:程式設計綜合問答

定義回調接口

public interface AsyncCallback {
    void onTaskComplete(String result);
}

AsyncTask 實現

public class MyTask extends AsyncTask {
    private AsyncCallback callback;

    public MyTask(AsyncCallback callback) {
        this.callback = callback;
    }

    @Override
    protected String doInBackground(Void... voids) {
        // 耗時操作
        return "Result from background";
    }

    @Override
    protected void onPostExecute(String result) {
        if (callback != null) {
            callback.onTaskComplete(result);
        }
    }
}

Activity 實現接口


public class MainActivity extends AppCompatActivity implements AsyncCallback {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        new MyTask(this).execute();
    }

    @Override
    public void onTaskComplete(String result) {
        // 更新 UI
        textView.setText(result);
    }
}

現代替代:協程 / LiveData / RxJava


// 協程
lifecycleScope.launch {
    val result = withContext(Dispatchers.IO) { doBackgroundWork() }
    textView.text = result // 自動切回主線程
}

協程代碼更線性,生命周期感知自動取消,避免內存洩漏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved