Android中支持暂停和恢复的Timer和TimerTask封装

由于Timer和TimerTask类的对象只能用一次,所以如果想多次调度同一样的任务,必须重新实例化。

所以,封装了一个TimerHelper类,测试可用。

 1 public abstract class TimerHelper {
 2 
 3     private Timer mTimer = null;
 4 
 5     public void start(long delay, long period)
 6     {
 7         stop();
 8 
 9         mTimer = new Timer();
10         mTimer.schedule(new TimerTask() {
11             @Override
12             public void run() {
13 
14                 TimerHelper.this.run();
15             }
16         }, delay, period);
17     }
18 
19     public void stop()
20     {
21         if (mTimer != null) {
22 
23             mTimer.cancel();
24             mTimer = null;
25         }
26     }
27 
28     public TimerHelper() {
29 
30         mTimer = null;
31     }
32 
33     public abstract void run();
34 }

 

 

示例代码:

 1 public class MainActivity extends Activity {
 2 
 3     private final String TAG = this.getClass().getSimpleName();
 4 
 5     private TimerHelper mTimerHelper = null;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11 
12         ///
13         mTimerHelper = new TimerHelper() {
14             @Override
15             public void run() {
16 
17                 Log.d(TAG, "timer run-----");
18             }
19         };
20     }
21 
22     @Override
23     protected void onResume() {
24 
25         mTimerHelper.start(500, 5000);
26 
27         super.onResume();
28     }
29 
30     @Override
31     protected void onPause() {
32 
33         mTimerHelper.stop();
34 
35         super.onPause();
36     }
37 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。