Целочисленное значение не увеличивается каждый раз - PullRequest
0 голосов
/ 08 октября 2018

Я объявляю значение типа int, которое пытается увеличить каждое нажатие кнопки, но какое-то значение времени не увеличивается, а некоторые после 2 или 3 нажатия увеличиваются.Я всегда получаю журнал, так что событие щелчка не проблема, уже пробовал без статического, но все еще не работает.

public static int TotalScore = 0;

btnsubmit.setOnClickListener(new View.OnClickListener() 
{
            @Override
            public void onClick(View view) {
                initScoreSubmit();
            }
 });

public void initScoreSubmit()
{

        TotalScore++;
        txtTotalPoint.setText("Total Point: " +   String.valueOf(TotalScore));

        settings.set(AppSettings.Key.UserTotalPoint, TotalScore);

        Log.d(TAG, "Total_point "+TotalScore);
}

1 Ответ

0 голосов
/ 08 октября 2018

Подскажите, пожалуйста, почему не работает статическое значение или только int.

Из-за модели памяти Java.

Если один поток записывает переменную идругой читает переменную, единственные способы гарантировать , что второй поток видит значение, записанное первым:

  • объявить переменную как volatile,
  • синхронизировать два потока или
  • заменить пустую переменную со ссылкой на потокобезопасный класс;например, AtomicInteger.Переменная должна быть final.

. Вам необходимо прочитать Руководство Oracle по параллелизму и, в частности, разделы по синхронизации:

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