使用共享首选项单击后一分钟后显示视图

时间:2018-08-14 07:44:19

标签: android view onclick sharedpreferences

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

@api_view(['GET', 'POST'])
@parser_classes((PlainTextParser, JsonParser))
def sentenceList(request):
...

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

3 个答案:

答案 0 :(得分:1)

您必须做三件事:

第一: 在活动的 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);
    }

我希望这会有所帮助。

答案 1 :(得分:0)

使用Handler来跟踪一分钟,然后更新共享的首选项,并在“活动”或“片段”中,将侦听器附加到共享的首选项,以便在SharedPreference中的值时得到通知变化。

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        preferences.edit().putBoolean("isOneMinuteOver", false);
        //some other logic
        button.setVisibility(View.INVISIBLE);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                  preferences.edit().putBoolean("isOneMinuteOver", true);
            }
        }, 60 * 1000);
    }
});

答案 2 :(得分:0)

更好的解决方案是保存活动状态,然后在后台服务中运行CountDownTimer。该服务将自动更新SharedPreferences,如果它是Handler当前存在,则向其发送消息以显示按钮。那么您只能在它的UI处理程序中检查服务响应,或者如果长时间查看后又返回,请检查SharedPreferences值。