Android 定時器

cryAllen發表於2015-04-13

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;
    }
}

 

相關文章