Java 使用AsyncTask时出现异常InInitializeRerror
我正在使用AsyncTask从文件中读取数据。我在运行应用程序时遇到上述错误 错误消息如下: 03-29 20:06:08.445:E/AndroidRuntime13191: java.lang.Exception初始化错误03-29 20:06:08.445: E/AndroidRuntime13191: 在 com.google.app.BouncingBall.HighScore.loadFromFileHighScore.java:81 03-29 20:06:08.445:E/AndroidRuntime13191: 在 com.google.app.BouncingBall.HighScore.HighScore.java:24 03-29 20:06:08.445:E/AndroidRuntime13191:at com.google.app.BouncingBall.BouncingBallActivity$BouncingBallView.initBouncingBallActivity.java:185 03-29 20:06:08.445:E/AndroidRuntime13191:at com.google.app.BouncingBall.BouncingBallActivity$BouncingBallView.runBouncingBallActivity.java:173 03-29 20:06:08.445:E/AndroidRuntime13191:at java:1019 03-29 20:06:08.445: E/AndroidRuntime13191:原因:java.lang.RuntimeException:无法 在未调用Looper.prepare的线程内创建处理程序 03-29 20:06:08.445:E/AndroidRuntime13191:at android.os.Handler.Handler.java:121 代码Java 使用AsyncTask时出现异常InInitializeRerror,java,android,android-asynctask,Java,Android,Android Asynctask,我正在使用AsyncTask从文件中读取数据。我在运行应用程序时遇到上述错误 错误消息如下: 03-29 20:06:08.445:E/AndroidRuntime13191: java.lang.Exception初始化错误03-29 20:06:08.445: E/AndroidRuntime13191: 在 com.google.app.BouncingBall.HighScore.loadFromFileHighScore.java:81 03-29 20:06:08.445:E/And
private void loadFromFile()
{
new AsyncDataStorage().execute(FILENAME);
}
class AsyncDataStorage extends AsyncTask<String, Integer, Boolean> {
protected Boolean doInBackground(String... args) {
try {
FileInputStream fis = context.openFileInput(FILENAME);
byte[] raw = new byte[fis.available()];
String rawData=null;
while(fis.read()!=-1)
{
rawData = new String(raw);
}
return (processRawData(rawData));
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
引述:
必须在UI线程上创建任务实例
在您的容器中,没有在主应用程序即UI线程上创建任务实例,这就是导致此异常的原因
引述:
必须在UI线程上创建任务实例
在您的容器中,没有在主应用程序即UI线程上创建任务实例,这就是导致此异常的原因。只需将对com.google.app.BouncingBall.HighScore.loadFromFile的每个调用或其中创建的AsyncTask以可运行方式包装,然后将其发布到绑定到UI线程的处理程序 只需将对com.google.app.BouncingBall.HighScore.loadFromFile的每次调用或在其中创建的AsyncTask打包到Runnable中,然后将其发布到绑定到UI线程的处理程序 只需将对com.google.app.BouncingBall.HighScore.loadFromFile的每次调用或在其中创建AsyncTask的过程包装在Runnable中,并将其发布到绑定到UI线程的处理程序中即可。请你把它写下来作为答案,这样我就可以接受了。只需将对com.google.app.BouncingBall.HighScore.loadFromFile的每次调用或其中创建的AsyncTask封装在一个Runnable中,然后将其发布到绑定到UI线程的处理程序中即可。请你写下答案,这样我就可以接受了。谢谢你,先生!简单易懂的解释。ExceptionInInitializeError异常是否仅在另一个线程中创建AsyncTask时发生?或者在其他情况下也会发生这种情况?我知道这里的日志显示的原因是你写的,但我还有一个例外InInitializerRor没有显示出来。@androiddeveloper:我不知道-检查源代码。谢谢你,先生!简单易懂的解释。ExceptionInInitializeError异常是否仅在另一个线程中创建AsyncTask时发生?或者在其他情况下也会发生这种情况?我知道这里的日志显示原因是您编写的,但我有另一个例外InInitializeError没有显示出来。@androiddeveloper:我不知道-检查源代码。
03-29 20:06:08.445: E/AndroidRuntime(13191): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 03-29 20:06:08.445: