我在这里正确使用Thread类吗?

问题描述 投票:0回答:1
private static class StopRecListenerThread extends Thread {
    SpeechRecognizer recognizer;
    StopRecListenerThread(SpeechRecognizer recognizer) {
        this.recognizer = recognizer;
    }
    @Override
    public void run() {
        if (!this.recognizer.stop())
            Log.d(TAG, "StopRecListenerThread: listener was not stopped");
        else
            Log.d(TAG, "StopRecListenerThread: listener was stopped");
    }
}

我有一个需要停止的对象,但无法在主线程上完成。我将对象传递给静态

Thread
类并从那里停止它。这是
Thread
的有效用途还是我应该恢复为
AsyncTask
?我试图更好地理解
Thread

java android multithreading
1个回答
0
投票

仅使用

Thread
即可获得相同的结果。
AsyncTask
Thread
上的方便包装纸。鉴于 Android 要求仅从 UI 线程调用 UI 相关方法,
AsyncTask
提供了向 UI 线程传达工作状态(
onProgressUpdate
onPostExecute
等)的方法。使用 Thread 实现,您可能需要使用
Handler
才能获得相同的结果。这两种解决方案都不关心 Android 生命周期,因此如果您的后台线程工作需要一些时间(内存泄漏),请小心传递 Activity 上下文等。查看 AsyncTask 文档/源代码。

如今,RxJava 或 Kotlin 协程等解决方案已成为大多数开发人员的解决方案。可能是因为比较方便吧。

© www.soinside.com 2019 - 2024. All rights reserved.