定時器有什么用
在我們Android客戶端上有時候可能有些任務(wù)不是當時就執(zhí)行,而是過了一個規(guī)定的時間在執(zhí)行此次任務(wù)门粪。那么這個時候定時器的作用就非常有用了钓觉。首先開啟一個簡單的定時器
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
try {
holder.post(url,"",200);
} catch (IOException e) {
e.printStackTrace();
}
}
};
現(xiàn)在我就相當于定義了一個定時器,我現(xiàn)在的定時器是向服務(wù)器發(fā)送Post請求來返回數(shù)據(jù)刷新到我的界面上那么接下來就是開啟定時器了肢娘。開啟定時器那就非常簡單了
timer.schedule(task,0,10000);
開啟定時器特別簡單基本上一句話就搞定了
開啟定時器需要三個參數(shù)
1.就是上面所寫的你要做的事情 ,上面我寫的上向網(wǎng)絡(luò)發(fā)送請求那么這里就時開啟定時器請求網(wǎng)絡(luò)
2.這個參數(shù)是你要多長時間后執(zhí)行這個定時器舆驶,這里我寫的是0橱健,那么就是0秒后執(zhí)行我的定時器。
3.這個是最重要的這就是你每次執(zhí)行時間的間隔 我這里就是說每10秒向網(wǎng)絡(luò)發(fā)送一次請求如果寫成1000就是每一秒向網(wǎng)絡(luò)發(fā)送一次請求
如果第三個參數(shù)不寫的話那么定時器就是幾秒后執(zhí)行 那么定時器只執(zhí)行一次就不在執(zhí)行了
定時器的請求周期
其實定時器如果不銷毀的話是一直執(zhí)行的但其實定時器如果一直執(zhí)行的話那么我們的程序根本就撐不了多長時間就會崩潰所以說定時器用完就要及時的關(guān)閉
定時器的開啟在寫Fragment或者Activity的時候我一般會寫在onStart里面
如果銷毀的時候會寫在onStop里面銷毀定時器也非常簡單
timer.cancel();
基本上這一句話就搞定了執(zhí)行這句話說明是注銷定時器
當我們離開本界面的時候就執(zhí)行這句話那么定時器就不會在執(zhí)行了當我們進入本界面在onStart執(zhí)行定時器那么就又開啟了定時器所以說這樣就寫了一個簡易版的定時器
public class WhiteFragment extends Fragment{
Handler handler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 200:
"執(zhí)行我要做的事情用來刷新UI"
}
}
}
private String url =
"http://ip地址:8080/2017guosaiserver/GetAllSense";
HttpHolder holder = new HttpHolder(handler);
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
try {
holder.post(url,"",200);
} catch (IOException e) {
e.printStackTrace();
}
}
};
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.whitefragment,null);
return view;
}
@Override
public void onStart() {
super.onStart();
timer.schedule(task,0,10000);
}
@Override
public void onStop() {
super.onStop();
timer.cancel();
}
}
一個簡單的定時器請求網(wǎng)絡(luò)就完成了 HttpHolder holder = new HttpHolder(handler); 這是自己寫的網(wǎng)絡(luò)請求類直接調(diào)用輸入url的服務(wù)器地址獲得的就是服務(wù)器發(fā)來的JSON格式的數(shù)據(jù)
在onStop里面注銷定時器那么每次離開本界面的時候那么定時候就銷毀了再回到本界面的時候那么就執(zhí)行onStart里面的開啟定時器那么定時器就開啟了所以這樣就避免了因為定時器開啟而使程序崩潰