定時器有什么用
在我們Android客戶端上有時候可能有些任務不是當時就執行,而是過了一個規定的時間在執行此次任務。那么這個時候定時器的作用就非常有用了。首先開啟一個簡單的定時器
Timer timer = new Timer();
TimerTask task = new TimerTask() { @Override public void run() { try { holder.post(url,"",200); } catch (IOException e) { e.printStackTrace(); } } };
現在我就相當於定義了一個定時器,我現在的定時器是向服務器發送Post請求來返回數據刷新到我的界面上那么接下來就是開啟定時器了。開啟定時器那就非常簡單了
timer.schedule(task,0,10000);
開啟定時器特別簡單基本上一句話就搞定了
開啟定時器需要三個參數
1.就是上面所寫的你要做的事情 ,上面我寫的上向網絡發送請求那么這里就時開啟定時器請求網絡
2.這個參數是你要多長時間后執行這個定時器,這里我寫的是0,那么就是0秒后執行我的定時器。
3.這個是最重要的這就是你每次執行時間的間隔 我這里就是說每10秒向網絡發送一次請求如果寫成1000就是每一秒向網絡發送一次請求
如果第三個參數不寫的話那么定時器就是幾秒后執行 那么定時器只執行一次就不在執行了
定時器的請求周期
其實定時器如果不銷毀的話是一直執行的但其實定時器如果一直執行的話那么我們的程序根本就撐不了多長時間就會崩潰所以說定時器用完就要及時的關閉
定時器的開啟在寫Fragment或者Activity的時候我一般會寫在onStart里面
如果銷毀的時候會寫在onStop里面銷毀定時器也非常簡單
定時器的開啟在寫Fragment或者Activity的時候我一般會寫在onStart里面
如果銷毀的時候會寫在onStop里面銷毀定時器也非常簡單
timer.cancel();
基本上這一句話就搞定了執行這句話說明是注銷定時器
當我們離開本界面的時候就執行這句話那么定時器就不會在執行了當我們進入本界面在onStart執行定時器那么就又開啟了定時器所以說這樣就寫了一個簡易版的定時器
public class WhiteFragment extends Fragment{
Handler handler = new Handler(){ public void handleMessage(Message msg){ switch(msg.what){ case 200: "執行我要做的事情用來刷新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(); } }
一個簡單的定時器請求網絡就完成了 HttpHolder holder = new HttpHolder(handler); 這是自己寫的網絡請求類直接調用輸入url的服務器地址獲得的就是服務器發來的JSON格式的數據
在onStop里面注銷定時器那么每次離開本界面的時候那么定時候就銷毀了再回到本界面的時候那么就執行onStart里面的開啟定時器那么定時器就開啟了所以這樣就避免了因為定時器開
在onStop里面注銷定時器那么每次離開本界面的時候那么定時候就銷毀了再回到本界面的時候那么就執行onStart里面的開啟定時器那么定時器就開啟了所以這樣就避免了因為定時器開
啟而使程序崩潰