Android 4.3.47 setPathAsync NetworkOnMainThreadException
@kevingpqi123 is already working on this.
Since Mar 25, 2024.
- Dominant language
- HTML
- Stars
- 5.8k
- Forks
- 531
- Avg merge
- 8d 55m
- Merged PRs (30d)
- 17
Description
【版本信息】
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返回成功肯定是资源文件已经有了。
【Demo及附件】
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.