android 多线程3:Timer

来源:互联网 发布:360软件管家 编辑:程序博客网 时间:2024/05/14 03:12

在Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类例如计时器,TimerTask相对于Thread来说对于资源消耗的更低

TimerTask定时器的例子: 

class PlaceholderFragment extends Fragment{private TextView mTextView;private Button mbtnGet;private MainActivity context;/** * 计时时长 */private int smsTimeCount;/** * 短信验证码倒计时 */private Timer smsTimer = null;Handler myHandler = new Handler(){public void handleMessage(Message msg){switch (msg.what){case 0x01:if (msg.arg1 <= 0){smsTimer.cancel();smsTimer = null;mTextView.setText("时间到");}else{mTextView.setText("还剩余" + msg.arg1 + "秒");}break;}super.handleMessage(msg);}};public PlaceholderFragment(){super();}public PlaceholderFragment(MainActivity context){this.context = context;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){View rootView = inflater.inflate(R.layout.fragment_main, container,false);mbtnGet = (Button)rootView.findViewById(R.id.myButton)mTextView = (TextView) rootView.findViewById(R.id.myTextView); mbtnGet.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){if(smsTimer!=null){smsTimer.cancel();smsTimer = null;}smsTimeCount = 300;smsTimer = new Timer();smsTimer.schedule(new TimerTask(){@Overridepublic void run(){smsTimeCount --;Message message = new Message(); message.what = 0x01;message.arg1 = smsTimeCount;myHandler.sendMessage(message); }}, 1000, 1000);}}); return rootView;}}

0 0
原创粉丝点击