思路:打开的时候缓存一个时间,如果当前的时间比保存的时间大,就是第二天。
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测试的代码还在里面,请先自己测试下再用啊!