Thread suspend()UnsupportedOperationException

时间:2014-12-23 21:11:20

标签: java android exception unsupportedoperation

我正在使用滑雪追踪器应用程序,但是我在第一个任务中遇到了问题:)秒表

这是我的服务:

public class TrackerService extends Service {
    private IBinder mBinder = new TrackerBinder();
    private TimerThread thread;
    private int min =0,sec=0;
    private boolean running = true;

    @Override
    public void onCreate() {
        thread = new TimerThread();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }


    public void startTimer(){
        if(!thread.isAlive())
            thread.start();
        else{
            thread.resume();
        }
    }

    public void pauseTimer(){
        thread.suspend();
    }

    public class TrackerBinder extends Binder{
        public TrackerService getService(){
            return TrackerService.this;
        }

    }

    public class TimerThread extends Thread{
        @Override
        public void run() {
            while (running){
                sec++;
                if(sec==60){
                    min++;
                    sec=0;
                }
                try {
                    Thread.sleep(1000);
                }catch(Exception e){}
            }
        }
    }
}

我从绑定活动中调用startTimer()和pauseTimer()方法,但在简历中我得到了java.lang.UnsopportedOperationException。 知道怎么解决吗?

2 个答案:

答案 0 :(得分:1)

停止后,您无法重新启动线程。但你可以做的是实例化一个新的TimerThread并再次启动它!

喜欢

TimerThread newThread = new TimerThread();
newThread.start();

答案 1 :(得分:0)

请勿在主题上致电stop()suspend()resume()。这些方法已被弃用了很长时间,javadoc解释了原因。

您可以执行以下两项操作之一:1。跟踪线程类中的计时器状态;或2.每次启动计时器时启动一个新线程,然后在停止计时器时退出该线程。第二个可能是你想要的。