gpt4 book ai didi

android - 在主线程上使用setDataSource真的无效吗?

转载 作者:太空狗 更新时间:2023-10-29 12:49:35 25 4
gpt4 key购买 nike

我最近注意到我在我的 Android 开发者控制台中收到以下崩溃报告:

android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
at java.net.InetAddress.getHostByAddrImpl(InetAddress.java:440)
at java.net.InetAddress.getHostName(InetAddress.java:313)
at android.media.MediaPlayer.checkHostdata(MediaPlayer.java:869)
at android.media.MediaPlayer.isLocalhost(MediaPlayer.java:940)
at android.media.MediaPlayer.setDataSourceBase(MediaPlayer.java:980)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1085)
[the rest is irrelevant]

似乎在 MediaPlayer.setDataSource 的某处方法有一些代码接触到导致 StrictMode 吠叫的网络。这有点令人惊讶,因为在主线程上调用 setDataSource 似乎是常见的做法。

所以我的问题是,处理这个问题的最佳方法是什么?我应该将 mediaPlayer 移出主线程吗?我应该忽略它吗?或者,还有什么?

最佳答案

好吧,从战略上讲,这感觉有点像 StrictMode 逻辑有点过于激进,如果 getHostByAddrImpl() 确实是这样的话,将来可能会得到修复' 有进行阻塞网络 I/O 调用的风险。

从策略上讲,您应该将 setDataSource() 调用移至后台线程,尤其是当源指向网络时(httprtsp等)。

关于android - 在主线程上使用setDataSource真的无效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com