android–View.getContext返回null,为什么?

android–View.getContext返回null,为什么?,第1张

概述我正在使用带有javascript界面​​的WebView,有时当我在webView上调用loadUrl时,mWebView.getContext()返回null.>视图如何没有上下文?为什么?>视图whitout上下文是否仍在使用或可重用?>当我的观点没有背景时,我该怎么办?>最重要的是,如果视图没有上下文,那么mWebView.post(newRunnab

我正在使用带有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,为什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存