有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getThreadHandler方法无法从HandlerThread实例访问

我正在查看HandlerThread类的源代码,并注意到该类包含一个数据成员mHandler。mHandler是类型Handler的实例

private @Nullable Handler mHandler;

还有一个访问器方法用于获取HandlerThread类中定义的私有成员的实例

@NonNull
public Handler getThreadHandler() {
    if (mHandler == null) {
        mHandler = new Handler(getLooper());
    }
    return mHandler;
}

我试图通过调用HandlerThread引用上的方法来获取对mHandler成员的引用。AndroidStudio不允许对HandlerThread实例调用getThreadHandler方法。该方法看起来是公共的,就像可以在HandlerThread实例上调用的其他公共方法一样。有人知道为什么不能在HandlerThread实例上调用公共方法getThreadHandler吗。我是不是在类/方法/成员定义中遗漏了什么?我用于实例化HandlerThread实例和调用方法的代码如下所示

...

import 安卓.os.*

...

class SearchActivity : AppCompatActivity(), View.OnClickListener {

...

    private val backgroundWork = HandlerThread("BackgroundApiCall")
    private lateinit var backgroundHandler: Handler

    ...

    override fun onCreate(savedInstanceState: Bundle?) {

        ...

        backgroundWork.start()
        backgroundHandler = = Handler(backgroundWork.looper)
        // an attempt here to call getThreadHandler will not work
        val handler = backgroundWork.threadHandler // or .getThreadHandler() for our Java friends
        ...

    override fun onDestroy() {
        super.onDestroy()
        backgroundWork.quit()
    }

    override fun onClick(_searchBtn: View?) {
        backgroundHandler.post(requestWork)
    }

    ....

注意:我只发布了与当前问题相关的代码,而不是整个类


共 (0) 个答案