我正在使用带有javascript界面的WebVIEw,有时当我在webVIEw上调用loadUrl时,mWebVIEw.getContext()返回null.
>视图如何没有上下文?为什么?
>视图whitout上下文是否仍在使用或可重用?
>当我的观点没有背景时,我该怎么办?
>最重要的是,如果视图没有上下文,那么mWebVIEw.post(new Runnable(){…会被执行吗?
>这段代码是否相关?
if (Looper.getMainLooper().getThread() == Thread.currentThread()) { mWebVIEw.loadUrl("JavaScript:...");} else { mWebVIEw.post(new Runnable() { public voID run() { mWebVIEw.loadUrl("JavaScript:..."); } });}
解决方法:
视图的空上下文的2个常见原因:
>您正在尝试在异步(处理程序,网络调用)调用的回调中获取上下文,但由于用户的另一个 *** 作(例如:已按下),活动/片段已消失.因此视图被分离并且不再具有上下文.
>您的某处存在内存泄漏,并且您的活动和视图层次结构有两个或更多实例.然后在你不再引用的实例中发生了某些事情,但是视图已经失去了与其上下文的链接.
关于处理程序.
我不确定视图是否有自己的处理程序,或者如果它使用它附加的Activity的处理程序,你可能必须阅读源代码才能找到.然而问题并不是真的相关:如果视图没有上下文,则会出现更大的问题:它不在屏幕上.
关于5.中的代码是否相关,您需要回答这些问题:为什么不知道您的代码在哪个线程上运行?
当你知道自己在哪个线程上,并且如果你不在主线程上是有意义的话,那么使用处理程序是在main上执行代码的有效方法.以及Activity.runOnUiThread()
请记住,Handler的生命周期与活动无关.因此,当活动/片段暂停时,您应该清除消息队列和runnables
总结以上是内存溢出为你收集整理的android – View.getContext返回null,为什么?全部内容,希望文章能够帮你解决android – View.getContext返回null,为什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)