zoukankan      html  css  js  c++  java
  • Android 定时器

    Andorid定时器封装类

    public class TimerUtil {
        private static final String TAG = "TimerUtil";
        
        private static Handler  mTimeHandler   = null;
        private static boolean  mTimerMark     = false;
        private static Runnable mTimerRunnable = null;
        private static int      mUpdateTime    = 0;
    
        private TimerUtil() {
        };
    
        /**
         * 定时器开始定时
         * 
         * @param doThing 定时器处理事情
         * @param updateTime 定时器时间
         * @since V1.0
         */
        public static void startTime(Runnable doThing, int updateTime) {
            if (null == doThing || updateTime < 0) {
                return;
            }
    
            if (null == mTimeHandler) {
                mTimeHandler = new Handler();
                mTimerRunnable = doThing;
                mUpdateTime = updateTime;
                mTimerMark = true;
            }
    
            if (mTimerMark) {
                mTimeHandler.postDelayed(mTimerRunnable, 0);
            } else {
                mTimeHandler.postDelayed(null, 0);
            }
        }
    
        /**
         * 定时器开始定时
         * 
         * @param doThing 定时器处理事情
         * @param updateTime 定时器时间
         * @param mode 定时器模式
         * @since V1.0
         */
        public static void startTime(Runnable doThing, int updateTime, boolean mode) {
            if (null == doThing || updateTime < 0) {
                return;
            }
    
            if (null == mTimeHandler) {
                mTimeHandler = new Handler();
                mTimerRunnable = doThing;
                mUpdateTime = updateTime;
                mTimerMark = true;
            }
    
            if (mTimerMark) {
                if (mode) {
                    mTimeHandler.postDelayed(mTimerRunnable, 0);
                } else {
                    mTimeHandler.postDelayed(mTimerRunnable, updateTime);
                }
            } else {
                mTimeHandler.postDelayed(null, 0);
            }
        }
        
        /**
         * 这里对方法做描述
         * 
         * @since V1.0
         */
        public static void updataTime() {
            if (mTimerMark) {
                mTimeHandler.postDelayed(mTimerRunnable, mUpdateTime);
            } else {
                mTimeHandler.postDelayed(null, 0);
            }
        }
    
        /**
         * 这里对方法做描述
         * 
         * @since V1.0
         */
        public static void stopTime() {
            mTimerMark = false;
            if (null != mTimeHandler) {
                mTimeHandler.removeCallbacks(mTimerRunnable);
                mTimeHandler = null;
            }
        }
        
        /**
         * time格式 String型的日 如:昨天、今天、8月24日 15:30
         * @param ltime
         * @param context
         * @return
         * @since V1.0
         */
       public synchronized static String getTime_FormatTime_MMDD(long ltime, Context context) {
           String time = "";
           
           Calendar dateCalendar = Calendar.getInstance();
           dateCalendar.setTimeInMillis(ltime);
           
           Calendar targetCalendar = Calendar.getInstance();
           targetCalendar.set(Calendar.HOUR_OF_DAY, 0);
           targetCalendar.set(Calendar.MINUTE, 0);
           
           
           
           if (dateCalendar.after(targetCalendar)) {
               time = context.getString(R.string.today) +" "+ time;
               return time;
           } else {
               targetCalendar.add(Calendar.DATE, -1);
               if (dateCalendar.after(targetCalendar)) {
                   time = context.getString(R.string.yesterday) +" "+ time;
                   return time;
               }
           }
           
           String otherSDF = context.getString(R.string.mmdd);
           Date date = dateCalendar.getTime();
           SimpleDateFormat sfd = new SimpleDateFormat(otherSDF);
           time = sfd.format(date);
           CLog.d(TAG, "getTime_FormatTime_MMDD time:"+time);
           return time;
       }
        
        /**
          * time格式 String型的日 如:昨天、今天、8月24日 15:30
          * @param ltime
          * @param context
          * @return
          * @since V1.0
          */
        public synchronized static String getTime_FormatTime_MMDDHHMM(long ltime, Context context) {
            String time = "";
            
            Calendar dateCalendar = Calendar.getInstance();
            dateCalendar.setTimeInMillis(ltime);
            
            int month = dateCalendar.get(Calendar.MONTH) + 1;
            int day = dateCalendar.get(Calendar.DAY_OF_MONTH);
            int hour = dateCalendar.get(Calendar.HOUR_OF_DAY);
            int minute = dateCalendar.get(Calendar.MINUTE);
    
            time = String.format("%02d:%02d", hour, minute);
            
            Calendar targetCalendar = Calendar.getInstance();
            targetCalendar.set(Calendar.HOUR_OF_DAY, 0);
            targetCalendar.set(Calendar.MINUTE, 0);
            if (dateCalendar.after(targetCalendar)) {
                time = context.getString(R.string.today) +" "+ time;
                return time;
            } else {
                targetCalendar.add(Calendar.DATE, -1);
                if (dateCalendar.after(targetCalendar)) {
                    time = context.getString(R.string.yesterday) +" "+ time;
                    return time;
                }
            }
            
            time = String.format(Locale.ENGLISH,"%02d-%02d %02d:%02d", month, day, hour, minute);
            CLog.d(TAG, "getTime_FormatTime_MMDDHHMM time:"+time);
            return time;
        }
        
        /**
         * 这里对方法做描述
         * 
         * @return time格式 nnnn-mm-dd hh:mm:ss
         * @since V1.0
         */
        public synchronized static String getTime_nnnnyydd(long t) {
            if (t == 0) {
                return "";
            }
    
            Calendar cale = Calendar.getInstance();
            cale.setTimeInMillis(t);
            int year = cale.get(Calendar.YEAR);
            int month = cale.get(Calendar.MONTH) + 1;
            int day = cale.get(Calendar.DAY_OF_MONTH);
            int hour = cale.get(Calendar.HOUR_OF_DAY);
            int minute = cale.get(Calendar.MINUTE);
            int second = cale.get(Calendar.SECOND);
    
            String time = String.format(Locale.ENGLISH, "%d-%02d-%02d %02d:%02d:%02d",  year, month, day, hour, minute, second);
            CLog.d(TAG, "getTime_nnnnyydd time:"+time);
            return time;
        }
        
        /**
         * 这里对方法做描述
         * 
         * @return time格式 nnnn-mm-dd hh:mm:ss
         * @since V1.0
         */
        public synchronized static String getTime_nnnnyydd(Calendar cale) {
            if (cale == null) {
                return "";
            }
            
            int year = cale.get(Calendar.YEAR);
            int month = cale.get(Calendar.MONTH) + 1;
            int day = cale.get(Calendar.DAY_OF_MONTH);
            int hour = cale.get(Calendar.HOUR_OF_DAY);
            int minute = cale.get(Calendar.MINUTE);
            int second = cale.get(Calendar.SECOND);
            String time = String.format(Locale.ENGLISH,"%d-%02d-%02d %02d:%02d:%02d", year,month,day, hour, minute, second);
            CLog.d(TAG, "getTime_nnnnyydd time:" + time);
            return time;
        }
    }
  • 相关阅读:
    (转)织梦dedecms自定义表单导出到excel的方法
    安全狗切换账号方法
    控制文字动态输出
    点击/swt/带有标识 直接跳转商务通(3)
    点击/swt/ 带有标识 直接跳转快商通
    点击/swt/直接跳转商务通(2)
    form表单select联动(转)
    表单提交到商务通后台 中文说明加换行的实现方法(转)
    快商通智慧网络营销电话
    自定义一个可以使用foreach语句进行迭代的类(IEnumerable)
  • 原文地址:https://www.cnblogs.com/cr330326/p/4422569.html
Copyright © 2011-2022 走看看