android用SP,判断是否过了一天

思路:打开的时候缓存一个时间,如果当前的时间比保存的时间大,就是第二天。

PS:用sp会有个漏洞,如果客户把缓存清理了,再打开,还是会执行第二天的事件,或者用户改了android的系统时间,也一样。

如果是要精确的做到第二天的判断,还是需要和服务器交互。

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */

    SharedPreferences sp;
    SharedPreferences.Editor editor;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sp = getSharedPreferences("myapp", MODE_PRIVATE);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
        if (isToday()) {
            //不是同一天的时候做一些啥的
            Toast.makeText(this, "一分钟过去了", Toast.LENGTH_LONG).show();
        }
    }

    /**
     * 判断是否是同一天
     * 是同一天返回false
     *
     * @return
     */
    private boolean isToday() {
        editor = sp.edit();
        Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料
        t.setToNow(); // 取得系统时间。
        int year = t.year;
        int month = t.month;
        int date = t.monthDay;
        int minute = t.minute;
        int oldminute = sp.getInt("minute", -1);
        int oldyear = sp.getInt("year", -1);
        int oldmonth = sp.getInt("month", -1);
        int olddate = sp.getInt("date", -1);
        saveMsg();
        //the first
        if (oldminute == -1 || oldyear == -1 || oldmonth == -1 || olddate == -1) {
            return true;
        }
        logUtil("timeM", t.minute);
        if (oldyear < year) {
            logUtil("month", month);
            return true;
        } else if (oldmonth < month) {
            return true;
        } else if (olddate < date) {
            return true;
        } else if (oldminute < minute) {
            return true;
        } else {
            return false;
        }
    }

    private void saveMsg() {
        Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料
        t.setToNow(); // 取得系统时间。
        int year = t.year;
        int month = t.month;
        int date = t.monthDay;
        int minute = t.minute;
        editor.putInt("year", year);
        editor.putInt("month", month);
        editor.putInt("date", date);
        editor.putInt("minute", minute);
        editor.commit();
    }

    private void logUtil(String name, int msg) {
        Log.v(name, "" + msg);
    }
}

界面就不给了,PS测试的代码还在里面,请先自己测试下再用啊!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值