android 多线程3:Timer

在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;
	}

	@Override
	public 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()
		{
			@Override
			public void onClick(View v)
			{
				if(smsTimer!=null)
				{
					smsTimer.cancel();
					smsTimer = null;
				}
				smsTimeCount = 300;
				smsTimer = new Timer();
				smsTimer.schedule(new TimerTask()
				{
					@Override
					public void run()
					{
						smsTimeCount --;
						Message message = new Message(); 
						message.what = 0x01;
						message.arg1 = smsTimeCount;
						myHandler.sendMessage(message); 
					}
				}, 1000, 1000);
			}
		});
		 return rootView;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值