求指教,或者说是探讨一个问题

ccchp 2013-01-05 05:35:20
请教或者探讨一个问题,需求大概是 不定数量的Button,点击button开启一个线程,间隔1s输出1-10,期间点击其它button后原来的输出停止,然后再重头输出,有什么好的方法实现呢
...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
顾小林 2013-01-07
  • 打赏
  • 举报
回复
这个简单 你可以把你输出那个 i 重置为 开始的数据
ccchp 2013-01-07
  • 打赏
  • 举报
回复
引用 6 楼 shen332401890 的回复:
你可以这么做 我觉得 弄一个while 循环 设置一个 flag 当你点击开始的时候 flag = true 然后while跑 你可以选择用 threadsleep 也可以用时钟 停一秒然后在刷新textview 当你点击停止的时候 改变flag = false 应该OK吧
前半部分没问题,但是后边不是停止按钮,而是点击按钮重复前半部分的工作
顾小林 2013-01-07
  • 打赏
  • 举报
回复
你可以这么做 我觉得 弄一个while 循环 设置一个 flag 当你点击开始的时候 flag = true 然后while跑 你可以选择用 threadsleep 也可以用时钟 停一秒然后在刷新textview 当你点击停止的时候 改变flag = false 应该OK吧
booooo­ 2013-01-06
  • 打赏
  • 举报
回复
引用 4 楼 SunBo_Java 的回复:
引用 3 楼 ccchp 的回复:引用 1 楼 SunBo_Java 的回复:此问题So easy。直接上代码: Java code?1234567891011121314151617181920212223242526272829303132private int num = 1; private final Runnable printOutRunn……
额,Sorry,中间的逻辑写的有问题,不过整体方法是没错的。 你可以将中间的逻辑改成你需要的就好了,线程方面都是对的
booooo­ 2013-01-06
  • 打赏
  • 举报
回复
引用 3 楼 ccchp 的回复:
引用 1 楼 SunBo_Java 的回复:此问题So easy。直接上代码: Java code?1234567891011121314151617181920212223242526272829303132private int num = 1; private final Runnable printOutRunnable = new Runnab……
恩,你可以测试一下看看。 应该是可以的
ccchp 2013-01-06
  • 打赏
  • 举报
回复
引用 1 楼 SunBo_Java 的回复:
此问题So easy。直接上代码: Java code?1234567891011121314151617181920212223242526272829303132private int num = 1; private final Runnable printOutRunnable = new Runnable() { @Over……
首先感谢你的回答,给了我一个很好的提示,但是你粘的这段代码能输出1-10吗?
booooo­ 2013-01-05
  • 打赏
  • 举报
回复
Sorry,写错了。 if中的num不要++判断
booooo­ 2013-01-05
  • 打赏
  • 举报
回复
此问题So easy。直接上代码:
private int num = 1;
	
	private final Runnable printOutRunnable = new Runnable()
	{
		@Override
		public void run()
		{
			try
			{
				// 间隔1秒
				Thread.sleep(1000);
				// 判断num的值是否已经到了10,若到10,停止线程运行,否则继续
				if(num ++ == 10)
					mHandler.removeCallbacks(printOutRunnable);
				System.out.println(num ++);
			} catch (InterruptedException e)
			{
				e.printStackTrace();
			}
		}
	};
	
	private final Handler mHandler = new Handler();
	
	private void run()
	{
		// 每次重新启动线程,都先将num的值恢复默认,并移除之前的线程
		num = 1;
		mHandler.removeCallbacks(printOutRunnable);
		// 开始新的线程运行
		mHandler.post(printOutRunnable);
	}
最后,直接调用run()方法执行就OK了。 给分结贴吧

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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