因此,我需要在单击后使按钮消失,并在一分钟后再次显示。即使当我离开当前活动并返回到当前活动并且一分钟未过去时,该按钮也不会出现。 我已经尝试过类似的方法,但是它似乎不起作用:
@api_view(['GET', 'POST'])
@parser_classes((PlainTextParser, JsonParser))
def sentenceList(request):
...
有人知道如何进行这项工作吗?还是有另一种方法可以使我更轻松?
答案 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值。