Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 执行doInBackground时出错_Android_Multithreading_Android Asynctask - Fatal编程技术网

Android 执行doInBackground时出错

Android 执行doInBackground时出错,android,multithreading,android-asynctask,Android,Multithreading,Android Asynctask,我最近在AsyncTask中包装了一个主线程方法。它似乎认为我的代码中仍有一些东西试图访问UI线程。但我不确定它是什么-这是我的任务: private class showNextRandomQuestion extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params)

我最近在AsyncTask中包装了一个主线程方法。它似乎认为我的代码中仍有一些东西试图访问UI线程。但我不确定它是什么-这是我的任务:

        private class showNextRandomQuestion extends AsyncTask<Void, Void, String> {

                @Override
                protected String doInBackground(Void... params) {

                        SQLDatabaseHelper db = new SQLDatabaseHelper(MainActivity.this);

                        //get the data from the database
                        List<List<String>> listList = db.getAllAnswersByQuestion1();

                        //Get the question/text/answer Strings
                        List<String> questionStrings = listList.get(0); //question Strings
                        List<String> answerSetIds = listList.get(1);

                        //Generate random index
                        Random r = new Random();
                        int rand = Math.abs((r.nextInt() % questionStrings.size()));

                        //get answer description for randomly selected question
                        String questionString = questionStrings.get(rand);  
                        String answerSetId = answerSetIds.get(rand);

                        String regex = "\\[|\\]";
                        answerId = answerSetId.replaceAll(regex, "");
                        mQuestionString = questionString.replaceAll(regex, "");
                        return mQuestionString; 
                }

                @Override
                protected void onPostExecute(String result) {
                     questionView.setText(mQuestionString);  
                }

            }

有人能指出他们认为仍然在访问UI线程的东西是什么吗。非常感谢。

我认为这是由于索引超出了界限,所以您正在访问不存在的内容。请在第395行查看有什么内容。

我认为您的SqlHelper类出现异常。原因:android.database.CursorIndexOutOfBoundsException。检查你的光标是否为空?啊,是的,谢谢。我一直在尝试处理游标窗口是完全错误,你也是对的。我不确定是它导致了这个连锁反应,但现在你提到了。你觉得你能帮我解决这个问题吗?请随意看一看,因为我没走多远-请求索引-1,大小为383776,很臭,好像你没有调用游标。MoveToFirst这是我代码中的行-'List listList=db.getAllAnswersByQuestion1;'很明显,这就是它从数据库返回的内容。我会看看我能为我的另一个问题做些什么。谢谢!
05-25 08:55:35.787: W/CursorWindow(20418): Window is full: requested allocation 132 bytes, free space 104 bytes, window size 2097152 bytes
05-25 08:55:39.437: W/dalvikvm(20418): threadid=12: thread exiting with uncaught exception (group=0x415aad88)
05-25 08:55:39.537: E/AndroidRuntime(20418): FATAL EXCEPTION: AsyncTask #2
05-25 08:55:39.537: E/AndroidRuntime(20418): Process: com.example.quizapp, PID: 20418
05-25 08:55:39.537: E/AndroidRuntime(20418): java.lang.RuntimeException: An error occured while executing doInBackground()
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.os.AsyncTask$3.done(AsyncTask.java:300)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.lang.Thread.run(Thread.java:841)
05-25 08:55:39.537: E/AndroidRuntime(20418): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 383776
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at com.example.quizapp.SQLDatabaseHelper.getAllAnswersByQuestion1(SQLDatabaseHelper.java:393)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at com.example.quizapp.MainActivity$showNextRandomQuestion.doInBackground(MainActivity.java:395)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at com.example.quizapp.MainActivity$showNextRandomQuestion.doInBackground(MainActivity.java:1)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-25 08:55:39.537: E/AndroidRuntime(20418):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-25 08:55:39.537: E/AndroidRuntime(20418):    ... 4 more