현재 응용 프로그램에서 UI 스레드에서 작업을 완화 할 수있는 위치를 결정하기 위해 ScrictMode가 활성화되어 있고 새로운 FileInputStream 인스턴스를 만들 때 현재 onReadFromDisk FileInputStream Violation을 얻고 있습니다. 그것을 사용하여 내 MediaPlayer의 데이터 소스를 설정합니다. FileInputStream 인스턴스로 파일을로드하고 MediaPlayer의 데이터 소스를 설정하기 위해 별도의 스레드를 만들었지 만 FileInputStream 인스턴스를 만들 때 ScReadMode가 여전히 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 스레드 정책을 다시한다고 표시 다른 게시물을 발견했습니다 다음과 같이 코드입니다. 내가 잘못거야 무엇으로
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)
어떤 생각 :
이는 로그 캣 ScrictMode 보고서는 모습입니다?
감사합니다.
신속한 답변을 해주셔서 대단히 감사합니다, 마이클. 그랬어 :) – tony