5 java android kotlin kotlin-android-extensions
我正在查看HandlerThread类的源代码并注意到该类包含一个数据成员 mHandler。mHandler 是 Handler 类型的实例。
private @Nullable Handler mHandler;
Run Code Online (Sandbox Code Playgroud)
还有一个访问器方法,用于获取在HandlerThread类中定义的私有成员的实例。
@NonNull
public Handler getThreadHandler() {
if (mHandler == null) {
mHandler = new Handler(getLooper());
}
return mHandler;
}
Run Code Online (Sandbox Code Playgroud)
我试图通过调用我的 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)
}
....
Run Code Online (Sandbox Code Playgroud)
注意:我只发布与手头问题相关的代码,而不是整个班级。
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |