Android 在Java代码中如何在代码中判断时间是否过了10分钟

在Java代码中如何在代码中判断时间是否过了10分钟,也就是我用的点击事件弹的吐司如果点击第一次时弹了吐司,如果再点击第二次时吐司如果在相隔10分钟以内不会弹。(不用sleep)

我马上想到的就是 新建一个静态变量 time 用system.currenttime去更新,
如果newtime- time >10分钟 {吐司, 更新time}

如果你用RxJava的话这个问题很好解决,可以直接用throttleFirst函数来实现。
throttleFirst在每次事件触发后的一定时间间隔内丢弃新的事件
在配上RxBinding 真是酸爽的不行,废话不说上代码

 RxView.clicks(btn_click)
        .throttleFirst(10*60*1000, TimeUnit.SECONDS)
        .subscribe(new Action1<Void>() {
            @Override
            public void call(Void aVoid) {
                Toast.makeText(getActivity(),“我是吐司”, Toast.LENGTH_SHORT).show();
            }
        });

Date time1 = new Date();
System.out.println(time1);
new Thread(new Runnable() {
@Override
public void run() {
boolean flag = true;
Date time2;
while (flag){
time2 = new Date();
if (time2.after(new Date(time1.getTime()+1000*60))){
System.out.println(time2);
System.out.println("过了1分钟了");
flag = false;
}
}
}
}).start();

在给一个只是使用java的解决方法
思路就是每次点击事件中缓存点击事件,如何下次点击是的事件比现在多了10秒就响应

package com.test.retrifit2test;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.util.Date;

public class MainActivity extends AppCompatActivity {

    Date lastdate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn_click = (Button) findViewById(R.id.button);
        btn_click.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                Date now = new Date();
                if(lastdate==null||(now.getTime()-lastdate.getTime())>1000*60*10){
                    Log.d("test", "我是吐司 ");
                }
                lastdate =now;
            }
        });
    }

}



这是早上网上找的,分享一下
public class A{
private static long prevTime=0;
private static long curTime=0;
public static boolean check(){
curTime=System.currentTimeMillis();
if (prevTime>0 && ( (curTime-prevTime)>10000 )){
prevTime=curTime;
return true;
}else{
prevTime=curTime;
return false;
}
}
}

通过定时来完成吧!感觉比较好些

首先你在项目中Toast你得封装吧,不可能每显示一次就new一个Toast,那是demo阶段的为了方便才会那样写的,然后你的Toast显示也得封装下吧,谁也不会在项目中直接使用Toast.makeText().show,然后封装的时候你可以在showToast方法里加上一个判断,接着就是触发Toast,你可以通过handler也可以直接通过变量去判断

做一个计时器 http://www.cnblogs.com/shiyangxt/archive/2009/01/25/1380815.html