首页 > 解决方案 > 整数值不会每次都增加

问题描述

我声明了一个 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);
}

标签: javaandroidint

解决方案


你能告诉我为什么不是静态值或只有 int 不起作用。

因为 Java 内存模型。

如果一个线程写入一个变量而另一个线程读取该变量,那么保证第二个线程看到第一个线程写入的值的唯一方法是:

  • 将变量声明为 a volatile,
  • 同步两个线程,或者
  • 使用线程安全类替换裸变量;例如一个AtomicInteger. 变量应该是final

您需要阅读 Oracle 并发教程,特别是有关同步的部分:


推荐阅读