0

私はスキートラッカーアプリに取り組んでいますが、最初のタスクで失敗しました:)ストップウォッチ

これが私のサービスです:

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 が発生しました。それを解決する方法はありますか?

4

2 に答える 2

1

一度スレッドを停止すると、そのスレッドを再開することはできません。しかし、できることは、新しいインスタンスを作成しTimerThreadて、もう一度開始することです!

お気に入り

TimerThread newThread = new TimerThread();
newThread.start();
于 2014-12-23T21:17:35.483 に答える