Android singleTask + AsyncTask и неожиданные изменения значений переменных - PullRequest
1 голос
/ 29 августа 2011

У меня есть основное действие с режимом запуска, установленным как "singleTask". Когда я выводю его на передний план и вызывается метод onNewIntent, он запускает AsyncTask, содержащий цикл while, который читает строки из текстового файла.

Частично в этом цикле значение одной из моих целочисленных переменных меняется на 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 голосов
/ 29 августа 2011

myVariable, кажется, изменен из потока пользовательского интерфейса (потока деятельности). Попробуйте добавить запись в каждое место, где вы изменяете myVariable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...