【发布时间】:2014-09-02 16:45:03
【问题描述】:
这些方法在扩展服务的类中实现。每次按下按钮时都会启动一项新服务。
如果按钮被按下一次,LogCat 会输出我期望的结果,其中包括“Service onDestroy”的最终输出。但是,当按钮被按下两次时,第一次服务结束前的第二次,“Service onDestroy”。当第一个服务完成时只显示一次,第二个服务打印出其余的“服务运行”日志,而不是“服务 onDestroy”。
谁能告诉我为什么?谢谢!
public int onStartCommand(Intent intent,int flags, int startId) {
Log.i(TAG,"Service onStartCommand " + startId);
final int currentId = startId;
Runnable r = new Runnable() {
public void run() {
for (int i = 0; i < 3; i++) {
long endTime = System.currentTimeMillis() + 10*1000;
while (System.currentTimeMillis() < endTime) {
synchronized(this) {
try {
wait(endTime - System.currentTimeMillis());
}catch (Exception e) {
}
}
}
Log.i(TAG,"Service running");
}
stopSelf();
}
};
Thread t = new Thread(r);
t.start();
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG,"Service onBind");
return null;
}
@Override
public void onDestroy() {
Log.i(TAG,"Service onDestroy");
}
【问题讨论】:
标签: android multithreading android-service