我正在使用滑雪追踪器应用程序,但是我在第一个任务中遇到了问题:)秒表
这是我的服务:
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。 知道怎么解决吗?
答案 0 :(得分:1)
停止后,您无法重新启动线程。但你可以做的是实例化一个新的TimerThread
并再次启动它!
喜欢
TimerThread newThread = new TimerThread();
newThread.start();
答案 1 :(得分:0)
请勿在主题上致电stop()
,suspend()
或resume()
。这些方法已被弃用了很长时间,javadoc解释了原因。
您可以执行以下两项操作之一:1。跟踪线程类中的计时器状态;或2.每次启动计时器时启动一个新线程,然后在停止计时器时退出该线程。第二个可能是你想要的。