从HandlerThread实例无法访问getThreadHandler方法

时间:2018-08-28 14:59:06

标签: java android kotlin kotlin-android-extensions

我正在查看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 android.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 个答案:

没有答案