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