gpt4 book ai didi

java - Android 假设 "main/UI thread"ID 始终为 1 是否安全?

转载 作者:行者123 更新时间:2023-11-29 21:22:14 25 4
gpt4 key购买 nike

我正在处理一个包含在其他应用程序中的 jar 文件,它必须非常健壮。

在 jar 中,我有一个对象,比如说 SomeView,它接受一个 Android 上下文,尝试创建一个 Handler 对象,并且会触及 View ,所以它需要从主线程初始化。我如何保证 100% 他们不会在错误的线程中初始化我的 SomeView

例如:

public class SomeView {
Handler mHandler;
public SomeView(Context context) {
mHandler = new Handler();
}
}

即构造函数中的 if (Thread.currentThread().getId() != 1) failSafely(); 会起作用吗?

最佳答案

How can i guarantee 100% that they won't initialize my SomeView in the wrong thread?

将您的代码包装在 Runnable 中并使用 runOnUiThread()(在 Activity 上)或 post() (在 SomeView 上)以确保它在主应用程序线程上运行。

i.e. will if (Thread.currentThread().getId() != 1) failSafely(); in the constructor work?

我当然不会指望那个。

使用Looper.getMainLooper().getThread() 获取代表应用程序主线程的Thread 对象。但是,我只是将线程敏感 block 包装在 Runnables 中,并让这些 block 在主应用程序线程上运行。

关于java - Android 假设 "main/UI thread"ID 始终为 1 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601167/

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