編輯:關於Android編程
先來看一段代碼:
public static void main(String[] args) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("陽光小強");
}
}, 5000);
int i = 0;
while(true){
System.out.println(i++);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
將上面代碼修改如下:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("陽光小強");
}
}, 2000, 3000);此時定時器Timer就會在2000ms後開始執行run方法,每隔3000ms重復執行。如果有一種需求,隔1s、2s、1s、2s......分別執行定時器中的代碼(偶數秒和奇數秒分別執行不同的定時器),我們如何實現(s代表秒)
實現方式一:
public static void main(String[] args) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("陽光小強2秒");
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("陽光小強4秒");
}
}, 1000);
}
}, 1000, 2000);
int i = 0;
while(true){
System.out.println(i++);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}實現方式二: static int count = 0;
public static void main(String[] args) {
class MyTimerTask extends TimerTask{
@Override
public void run() {
count = (count + 1) % 2;
System.out.println("陽光小強" + (2 + 2 * count) + "秒");
new Timer().schedule(new MyTimerTask(), 2000 + 2000 * count);
}
}
new Timer().schedule(new MyTimerTask(), 2000);
int i = 0;
while(true){
System.out.println(i++);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}還有一種實際情況就是定時發郵件,我們可以用下面的方式
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
// 時間間隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
/*** 定制每日2:00執行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date = calendar.getTime(); // 第一次執行定時任務的時間
// 如果第一次執行定時任務的時間 小於 當前的時間
// 此時要在 第一次執行定時任務的時間 加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。
if (date.before(new Date())) {
date = addDay(date, 1);
}
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//TODO 去發郵件,或者其他定時任務
}
}, date, PERIOD_DAY);
}
// 增加或減少天數
public static Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
Android布局之GridLayout網格布局
網格布局標簽是GridLayout。這個布局是android4.0新增的布局。這個布局只有4.0之後的版本才能使用。不過新增了一些東東①跟LinearLayout(線性布
Android開發之多線程中實現利用自定義控件繪制小球並完成小球自動下落功能實例
本文實例講述了Android開發之多線程中實現利用自定義控件繪制小球並完成小球自動下落功能的方法。分享給大家供大家參考,具體如下:1、布局界面<RelativeLa
Android Studio/IntelliJIDEA 快捷鍵詳解
轉載請注明來源http://blog.csdn.net/siyehuazhilian/article/details/41803059 Android Studio快捷
Android設計模式系列-組合模式
Android中對組合模式的應用,可謂是泛濫成粥,隨處可見,那就是View和ViewGroup類的使用。在android UI設計,幾乎所有的widget和布局類都依靠這