关于timer和timertask的问题

android_Y 2012-06-26 04:35:58

public class mainActivity extends Activity {
Button button;
Button button2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.btn1);
button2 = (Button) findViewById(R.id.btn2);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
timer = new Timer();
timer.schedule(task, 1000, 1000);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
这里该怎么写让他完全停止 再次点击开始的时候不报错


}
});
}

Timer timer;
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("a");
}
};
}
...全文
584 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyolanda111 2012-11-12
  • 打赏
  • 举报
回复
不用Handle 重新再new一下TimerTask 搞定……
android_Y 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

应该让button的线程先停止,再把button2设为
Java code
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//这里该怎么写让他完全停止 再次点击开始的时候不报错
……
[/Quote]
重点就是不知道怎么让他完全停止 再次点击开始的时候不报错
wangdong20 2012-06-28
  • 打赏
  • 举报
回复
应该让button的线程先停止,再把button2设为
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//这里该怎么写让他完全停止 再次点击开始的时候不报错
//先让Timer线程停止
button2.setEnable(false);
//当button再次点击,就把button2.setEnable(true);

}
});
chuanbing 2012-06-28
  • 打赏
  • 举报
回复
public boolean isActive()Tests whether the timer MBean is active. A timer MBean is marked active when the start method is called. It becomes inactive when the stop method is called.
The default value of the active on/off flag is false.
alvisjiang 2012-06-27
  • 打赏
  • 举报
回复
你可以试试在同一个文件里重写个新的TimerTask的类,
这样你可以在每次按第一个按钮的时候构建一个新的你写的TimerTask的对象然后在schedule.
我反正是这样用TimerTask
希望对你有帮助
android_Y 2012-06-27
  • 打赏
  • 举报
回复
somebody help me !!!!!!!!!
3连了没人顶我就再也发不了了
android_Y 2012-06-27
  • 打赏
  • 举报
回复
没人吗
lych_0317 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

我的代码没写全只写了一部分
我先解决timer的问题在考虑其他的显示问题
[/Quote]

只能说祝你好运了!
android_Y 2012-06-27
  • 打赏
  • 举报
回复
我的代码没写全只写了一部分
我先解决timer的问题在考虑其他的显示问题
lych_0317 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 11 楼 的回复:

那可不可以考虑用handler呢?

跟用不用handler有关系吗?
[/Quote]

我是说你做定时器为啥只用timer?而不考虑用handler,现在问题是你timer打不成你的目的,谷歌给你提供了handler为啥不考虑?
lych_0317 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 11 楼 的回复:

那可不可以考虑用handler呢?

跟用不用handler有关系吗?
[/Quote]

我是说你做定时器为什么不用handler,非要用(或者只用)timer任务来做?
android_Y 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

那可不可以考虑用handler呢?
[/Quote]
跟用不用handler有关系吗?
lych_0317 2012-06-27
  • 打赏
  • 举报
回复
那可不可以考虑用handler呢?
android_Y 2012-06-27
  • 打赏
  • 举报
回复
我想运行了timer一段时间后停止运行
然后重新开始运行timer
难道只能重新再new一下TimerTask?
lych_0317 2012-06-27
  • 打赏
  • 举报
回复
当然会报错了啊!每个TimerTask只能被schedule一次,第二次会抛出异常TimerTask is scheduled already(我想你的就是这个异常吧!)只是想知道你这样做的目的是什么呢?
android_Y 2012-06-27
  • 打赏
  • 举报
回复
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): java.lang.IllegalStateException: TimerTask is scheduled already
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at java.util.Timer.scheduleImpl(Timer.java:577)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at java.util.Timer.schedule(Timer.java:485)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at y.b.mainActivity$2.onClick(mainActivity.java:27)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.view.View.performClick(View.java:2408)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.view.View$PerformClick.run(View.java:8816)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.os.Handler.handleCallback(Handler.java:587)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.os.Handler.dispatchMessage(Handler.java:92)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.os.Looper.loop(Looper.java:123)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at java.lang.reflect.Method.invokeNative(Native Method)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at java.lang.reflect.Method.invoke(Method.java:521)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-27 15:59:38.042: ERROR/AndroidRuntime(1220): at dalvik.system.NativeStart.main(Native Method)
alvisjiang 2012-06-27
  • 打赏
  • 举报
回复
报的是啥Exception呢?
android_Y 2012-06-27
  • 打赏
  • 举报
回复
我点了第一个按钮开始
在点第二个停止
再点第一个开始就挂了
alvisjiang 2012-06-27
  • 打赏
  • 举报
回复
我看了一下API,cancel()这个方法是可以重复叫的,除了第一次叫会取消TimerTask之外后面几次叫都不会有任何效果。所以我不知道他报的是什么错。
alvisjiang 2012-06-27
  • 打赏
  • 举报
回复
所以你第一个按钮点就开始任务,第二个按钮一点就结束任务?
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧