Java 使用AsyncTask时出现异常InInitializeRerror

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

我正在使用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

代码

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: