Hug*_*sse 3 android android-lifecycle android-view
我正在使用带有javascript界面的 WebView,有时当我loadUrl在webView上调用时,mWebView.getContext()返回null.
mWebView.post(new Runnable() { ...被执行吗?这段代码是否相关?
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
mWebView.loadUrl("javascript:...");
} else {
mWebView.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:...");
}
});
}
Run Code Online (Sandbox Code Playgroud)zna*_*nat 11
视图的空上下文的2个常见原因:
您正试图在异步(处理程序,网络调用)调用的回调中获取上下文,但由于用户的另一个操作(例如:已按下),活动/片段已消失.因此视图被分离并且不再具有上下文.
您在某处有内存泄漏,并且您的活动和视图层次结构有两个或更多实例.然后在你不再引用的实例中发生了某些事情,但是视图已经失去了与其上下文的链接.
关于处理程序.我不确定视图是否有自己的处理程序,或者如果它使用它附加的Activity的处理程序,你可能必须阅读源代码才能找到.然而问题并不是真正相关:如果视图没有上下文,则会出现更大的问题:它不在屏幕上.
关于5.中的代码是否相关,您需要回答这些问题:为什么不知道您的代码在哪个线程上运行?
当你知道自己在哪个线程上,并且如果你不在主线程上是有意义的话,那么使用处理程序是在main上执行代码的有效方法.以及Activity.runOnUiThread()
请记住,Handler的生命周期与活动无关.因此,当活动/片段暂停时,您应该清除消息队列和runnables
| 归档时间: |
|
| 查看次数: |
5335 次 |
| 最近记录: |