Tencent / libpag

The official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms.

Home Page:https://pag.art

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Android 4.3.47 setPathAsync NetworkOnMainThreadException

zengke328 opened this issue · comments

【版本信息】

4.3.47

【平台信息】

Android 原生

【预期的表现】

PAG加载不报错。

【实际的情况】

使用PAGImageView的setPathAsync()异步加载网络pag,加载成功后调用play()播放动画。
setPathAsync(url) { pagFile ->
post {
onComplete()
play()
}
}

但是在Firebase上有NetworkOnMainThreadException报错,如下:
Fatal Exception: android.os.NetworkOnMainThreadException:
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1605)
at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
at java.net.InetAddress.getAllByName(InetAddress.java:1152)
at com.android.okhttp.Dns$1.lookup(Dns.java:41)
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:178)
at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144)
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176)
at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
at org.libpag.b.a(SourceFile:12)
at org.libpag.PAGFile.Load(SourceFile:2)
at org.libpag.PAGImageView.a(SourceFile:7)
at org.libpag.PAGImageView.f(SourceFile:4)
at org.libpag.PAGImageView.flush(SourceFile:2)
at org.libpag.PAGImageView.onAnimationUpdate(SourceFile:7)
at org.libpag.PAGAnimator.a(SourceFile:6)
at org.libpag.PAGImageView.play(SourceFile:1)
at com.oversea.commonmodule.widget.RawPagSmallImageView.loadPag$lambda$4$lambda$3(RawPagSmallImageView.kt:90)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:257)
at android.app.ActivityThread.main(ActivityThread.java:8220)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1015)

看了下流程,play()调用了animator.start(),触发了flush()操作,然后内部判断_composition为空又去网络重新下载,按理说setPathAsync返回成功肯定是资源文件已经有了。
image

【Demo及附件】

大佬们,帮忙看看