因此,我需要在单击后使按钮消失,并在一分钟后再次显示。即使当我离开当前活动并返回到当前活动并且一分钟未过去时,该按钮也不会出现。
我已经尝试过类似的方法,但是它似乎不起作用:

SharedPreferences preferences = getSharedPreferences("preferences", Context.MODE_PRIVATE);

button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            preferences.edit().putLong("timestamp", System.currentTimeMillis()).apply();
            //some other logic
            button.setVisibility(View.INVISIBLE);
        }
    });

if ((preferences.getLong("timestamp", 0) + 60000) == System.currentTimeMillis()) {
        button.setVisibility(View.VISIBLE);
    }


有谁知道如何进行这项工作?还是有另一种方法可以使我更轻松?

最佳答案

您必须做三件事:

第一:
检查活动的onResume()中的时间戳,并根据该时间戳设置setVisibility()。

将此代码添加到您的活动中:

    @override
protected void onResume(){
  super.onResume()

  if ((preferences.getLong("timestamp", 0) + 60000) <= System.currentTimeMillis()) {
    rereshImageView.setVisibility(View.VISIBLE);
  }else{
    refreshImageView.setVisibility(View.GONE);
  }

}


第二:

使用此代码再次显示按钮

new Handler().postDelayed(new Runnable(){


        @Override
        public void run() {
            refreshImageView.setVisibility(View.VISIBLE);
        }
    } , 60000);


第三:

将onResume()中的条件更改为此代码:

(等于等于变为较小的等于)

(因为您不能保证一分钟后会回来。

if ((preferences.getLong("timestamp", 0) + 60000) <= System.currentTimeMillis()) {
        refreshImageView.setVisibility(View.VISIBLE);
    }


希望对您有所帮助。

10-07 19:37