Метод getThreadHandler недоступен из экземпляра HandlerThread - PullRequest
0 голосов
/ 28 августа 2018

Я просматриваю исходный код класса HandlerThread и заметил, что класс содержит член данных mHandler. mHandler - это экземпляр типа Handler.

private @Nullable Handler mHandler;

Существует метод доступа для получения экземпляра закрытого члена, определенного также в классе HandlerThread .

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

Я попытался получить ссылку на член mHandler, вызвав метод из моей ссылки HandlerThread. AndroidStudio не разрешает вызов метода getThreadHandler для экземпляра HandlerThread. Этот метод выглядит общедоступным, как и другие общедоступные методы, которые можно вызывать в экземпляре HandlerThread. Кто-нибудь знает, почему открытый метод getThreadHandler не может быть вызван для экземпляра HandlerThread. Я просто что-то упустил в определении класса / метода / члена? Мой код для создания экземпляра 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)
    }

    ....

Примечание. Я публикую только код, относящийся к рассматриваемой проблеме, а не весь класс.

...