Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在线程';最终确定日期';但我的应用程序没有网络视图_Android_Android Webview_Android Strictmode - Fatal编程技术网

Android 在线程';最终确定日期';但我的应用程序没有网络视图

Android 在线程';最终确定日期';但我的应用程序没有网络视图,android,android-webview,android-strictmode,Android,Android Webview,Android Strictmode,我在开发应用程序时使用StrictMode策略: StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDea

我在开发应用程序时使用StrictMode策略:

  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());
我正在经历一种新型的碰撞,它似乎不知从何而来:

W/WebView: java.lang.Throwable: A WebView method was called on thread 'FinalizerDaemon'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 2) {7424b6e} called on null, FYI main Looper is Looper (main, tid 2) {7424b6e})
    at android.webkit.WebView.checkThread(WebView.java:2695)
    at android.webkit.WebView.loadUrl(WebView.java:969)
    at com.google.android.gms.ads.internal.webview.v.e(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:1)
    at com.google.android.gms.ads.internal.webview.v.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:9)
    at com.google.android.gms.ads.internal.webview.t.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:10)
    at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:2)
    at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
        at java.lang.Daemons$Daemon.run(Daemons.java:105)
        at java.lang.Thread.run(Thread.java:764)


2019-06-17 15:25:59.035 31170-31180/hu.myapp.name D/StrictMode: StrictMode policy violation: android.os.strictmode.WebViewMethodCalledOnWrongThreadViolation
        at android.webkit.WebView.checkThread(WebView.java:2695)
        at android.webkit.WebView.loadUrl(WebView.java:969)
        at com.google.android.gms.ads.internal.webview.v.e(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:1)
        at com.google.android.gms.ads.internal.webview.v.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:9)
        at com.google.android.gms.ads.internal.webview.t.destroy(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:10)
        at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(:com.google.android.gms.policy_ads_fdr_dynamite@20290004@20290004.249178941.249178941:2)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
        at java.lang.Daemons$Daemon.run(Daemons.java:105)
        at java.lang.Thread.run(Thread.java:764)
我的应用程序没有任何web视图,这就是为什么这很奇怪

这真的很烦人,崩溃没有包括我的任何代码行,只有android和google软件包


有什么想法吗?

显然,您正在使用使用WebView(Admob?)的应用内ads SDK。请参阅
com.google.android.gms.ads.internal.WebView…


另外,根据我使用
WebView
stricmode
的经验,您得到这种行为的事实可能不是ADSSDK的缺陷:我在我们的应用程序中,为了解决这个问题,我们必须禁用一些检查(或减少对日志的惩罚)(我们确实使用了
WebView
,而
WebView
本身就产生了
StrictMode
的问题,因为从UI线程进行磁盘访问以及类似的问题)。

我对admob也有同样的问题

下面是我如何重现崩溃的过程:

  • 当我的活动打开时,我加载一个interstitial->interstitial.loadAd(adRequest)
  • 但是一些设计原因取决于用户操作,我不需要这个间隙,因为我永远不会显示它
  • 用户操作打开另一个活动并销毁包含间隙的活动
->如果用户在Insertial完全加载时打开此新活动,则我没有任何问题

->如果用户在intertial完全加载之前打开此新活动,则会发生崩溃。当然,这是因为当interstitial finnish下载其数据时,它会初始化webview。但从那时起,Instittial变量已到达垃圾收集器

所以,解决办法是,不得不取消国际间的请求,但我发现没有什么可以做的

不确定如何解决我的问题。我不想等到加载结束后才响应用户操作。我也不能延迟或忽略间隙加载,假设用户操作将是什么


很抱歉重新激活此帖子,但在我看来,这是一个同样的问题。我没有给出解决方案,但至少给出了重现崩溃的确切方法。如果admob有人来到这里,请添加一个方法来取消处理加载

显然,您使用的是使用WebView(admob?)的应用内ads SDK请参阅
com.google.android.gms.ads.internal.webview…
您的应用程序可能没有,但admob SDK是。您是否尝试过使用不同的版本,以防SDK中出现错误?根据我在webview和StrictMode中的经验,可能不是错误。我必须禁用我们的应用程序的一些检查(或减少日志记录的惩罚)为了解决这个问题。转到一个答案,因为它似乎是对您所经历行为的更合理的解释。真正的问题/恼人的部分是,我确实有AdMob集成,但在调试模式下,我不显示任何广告。在使用严格模式时,我的应用程序中没有可见的网络视图。我会说这是一个错误。然后,是的,我无论您是否显示WebView,它看起来都在创建中,因此这很可能是AdMob SDK上的一个错误。因此,我保留设计并获得所需行为的解决方案是将Interstitual实现为singleton并添加销毁方法。如果Interstitual完成加载,我将销毁我的singleton。这不是完美的解决方案离子,因为我继续在后台加载一些我知道我永远不会使用的…非常疯狂,他们没有想到添加一个取消请求方法。。。