请教或者探讨一个问题,需求大概是 不定数量的Button,点击button开启一个线程,间隔1s输出1-10,期间点击其它button后原来的输出停止,然后再重头输出,有什么好的方法实现呢线程

解决方案 »

  1.   

    此问题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了。
    给分结贴吧
      

  2.   

    Sorry,写错了。
    if中的num不要++判断
      

  3.   

    额,Sorry,中间的逻辑写的有问题,不过整体方法是没错的。
    你可以将中间的逻辑改成你需要的就好了,线程方面都是对的
      

  4.   

    你可以这么做 我觉得 弄一个while 循环  设置一个 flag 当你点击开始的时候 flag = true 然后while跑 你可以选择用 threadsleep 也可以用时钟 停一秒然后在刷新textview 当你点击停止的时候 改变flag = false 应该OK吧