gpt4 book ai didi

android - 线程仅在 Android 的 Release模式下卡住 UI

转载 作者:行者123 更新时间:2023-12-03 13:09:19 29 4
gpt4 key购买 nike

在我的应用程序中,我们正在创建一个通过蓝牙打印机进行打印的线程。它在 Debug模式下工作正常,但在 Release模式下它给出了 ANR 错误。我正在从服务启动线程。我正在使用以下代码:

@Override
public void start() {
super.start();
while (!threadInitOK); // it is getting stuck here
}

@Override
public void run() {
Looper.prepare();
mLooper = Looper.myLooper();

if (null == mLooper)
Log.v(TAG, "mLooper is null pointer");
else
Log.v(TAG, "mLooper is valid");
workHandler = new WorkHandler();
threadInitOK = true;
Looper.loop();
}

在 Lollipop 版本中,它工作正常,它只是在 Marshmellow 版本中出现问题,在 Release模式下也是如此。

最佳答案

我假设您的代码 fragment 属于扩展 Thread 的类。
.start()在您的代码中肯定是从主线程调用的。因此,在这里进行阻塞等待(while(...);)并不是一个好主意。

您必须使用非阻塞等待(回调、事件、信号……)来获取有关您的 Looper 的信息。 . (例如:EventBusRxJava)

您可以使用 HandlerThread太(就像@Kelevandos 在评论中说的那样)。您可以在 source code 中查看它完全符合您的要求。

如果您给我们更多代码和您的目标,我们可以为您提供更多帮助。

关于android - 线程仅在 Android 的 Release模式下卡住 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630479/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com