[英]Async Task Replacement
什么是異步任務的替代品,因為它已被棄用以及如何使用替代品? 有什么建議么。
與異步任務功能相同的替換。
使用 AsyncTask API 可能允許您執行異步任務,但存在一些顯而易見的問題:
已棄用的 AsyncTask 的替代品
由於 AsyncTask 的缺點和棄用,開發人員應該轉向以下替代解決方案之一進行 Android 中的異步編程:
前兩個更受歡迎,API 用法更簡單
您可以直接使用 java.util.concurrent 包中的執行器。
我還搜索了它,並在這個 Android Async API is Deprecated 帖子中找到了解決方案。
不幸的是,該帖子使用的是 Kotlin,但經過一些努力我將其轉換為 Java。 所以這是解決方案。
ExecutorService executor = Executors.newSingleThreadExecutor();
Handler handler = new Handler(Looper.getMainLooper());
executor.execute(new Runnable() {
@Override
public void run() {
//Background work here
handler.post(new Runnable() {
@Override
public void run() {
//UI Thread work here
}
});
}
});
很簡單吧? 如果您在項目中使用 Java 8,則可以稍微簡化它。
ExecutorService executor = Executors.newSingleThreadExecutor();
Handler handler = new Handler(Looper.getMainLooper());
executor.execute(() -> {
//Background work here
handler.post(() -> {
//UI Thread work here
});
});
盡管如此,它在代碼的簡潔性方面仍然無法擊敗kotlin,但比以前的java版本要好。
希望這會幫助你。 謝謝你
AsyncTask 允許您執行后台操作並在 UI 線程上發布結果。
您可以使用以下替代方案:
WorkManager :您可以使用 WorkManager(Android Jetpack 庫的一部分)來安排和管理后台任務。
Coroutines :您可以使用 kotlinx.coroutines 包中的 CoroutineScope 類和相關類來執行后台操作。 協程是一種輕量級線程選項,可讓您編寫異步代碼。
Executor框架:可以使用java.util.concurrent包中的Executor類及相關類進行后台操作。 這是一個更強大的選項,允許您指定線程池並自定義任務的執行。
Threads :您可以使用 Thread 類來執行后台操作。 這是一個低級選項,需要您自己處理線程管理和與主線程的通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.