Android singleTask + AsyncTask和意外的变量值更改

时间:2011-08-29 03:18:25

标签: java android android-asynctask

我有一个主要活动,启动模式设置为“singleTask”。当我将它带到前台并调用onNewIntent方法时,它会运行一个包含while循环的AsyncTask,该循环从文本文件中读取行。

这个循环的一部分,我的一个整数变量的值变为0.这并不总是发生在循环周期的同一个阶段,循环与这个变量完全无关所以我不喜欢不明白为什么会这样。

这是一张可以更好地解释问题的图片:

http://i.stack.imgur.com/ogLQh.jpg

编辑:所要求的代码:

private class ReadFile extends AsyncTask<String, String, String> implements DialogInterface.OnCancelListener {

    protected void onPreExecute() {

        //Launch dialog
    }

    protected String doInBackground(String... path) {

        try {

            File f = new File(path[0]);
            FileInputStream in = new FileInputStream(f);
            InputStreamReader ir;
            ir = new InputStreamReader(in);

            BufferedReader br = new BufferedReader(ir);
            StringBuffer sb = new StringBuffer();
            String str = new String();              

            while ((str = br.readLine()) != null) {         

                Log.i("My Variable",Integer.toString(myVariable));

                sb.append(str);
                sb.append("\n\n");

            }

            br.close();
            myTextFile = sb.toString();

        } catch (IOException e) {
            e.printStackTrace();
        }

        return "";
    }

    protected void onProgressUpdate(String... progress) {

        //Nothing here

    }

    protected void onPostExecute(final String unusedString) {

        //Dismiss dialog

    }

    protected void onCancelled() {
        finish();
    }

    public void onCancel(DialogInterface dialog) {
        cancel(true);
    }
}

1 个答案:

答案 0 :(得分:0)

似乎从UI线程(活动线程)更改了

myVariable。尝试在修改myVariable的每个位置添加日志记录。