我目前在我的应用程序中启用了ScrictMode,以确定我可以在UI线程中缓解工作的位置,并且当前创建新的FileInputStream实例时我正在获取onReadFromDisk FileInputStream违规,然后用它来设置我的MediaPlayer的数据源。我创建了一个单独的线程将文件加载到FileInputStream实例中,并设置了我的MediaPlayer的数据源,但是当我尝试创建FileInputStream实例时,ScrictMode仍在报告存在onReadFromDisk冲突。代码如下:AndroidBlockGuardPolicy.onReadFromDisk FileInputStream违规
final Handler uiHandler = new Handler(Looper.getMainLooper());
Thread loadInputStream = new Thread(new Runnable() {
@Override
public void run() {
try {
if (m_mediaPlayer == null)
m_mediaPlayer = new MediaPlayer();
FileInputStream fileInputStream = new FileInputStream(path);
m_mediaPlayer.setDataSource(fileInputStream.getFD());
fileInputStream.close();
m_mediaPlayer.setOnErrorListener(MainActivity.this);
m_mediaPlayer.setOnPreparedListener(MainActivity.this);
m_mediaPlayer.setOnCompletionListener(MainActivity.this);
m_mediaPlayer.prepare();
} catch (final Exception e) {
uiHandler.post(new Runnable() {
@Override
public void run() {
LogException(e.getMessage() + " (path == " + path + ")", "playVideo()");
}
});
}
}
});
loadInputStream.run();
我有一个走一走,看一看,发现另一篇文章这说明我应该重新设置StrictMode线程策略 - 我试过,但我仍然收到这个违规报告。
这是logcat的ScrictMode报告的样子:
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1107)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:106)
at libcore.io.IoBridge.open(IoBridge.java:400)
at java.io.FileInputStream.<init>(FileInputStream.java:78)
at java.io.FileInputStream.<init>(FileInputStream.java:105)
at com.subdc.subdcmain.MainActivity$6.run(MainActivity.java:440)
at java.lang.Thread.run(Thread.java:856)
at com.subdc.subdcmain.MainActivity.playVideo(MainActivity.java:467)
任何想法,以什么我要去我错了吗?
非常感谢。
非常感谢您的及时回应,迈克尔。 这样做:) – tony