通常,在我结束我的发言时,我向我的服务机构发出信号,在StartCommand使用一种真正的外衣安全关闭。 我在任期申请表中这样做。 我补充说,如果说的话,是因为我是在强行关闭这块地的 app子时获得一个完全的例外。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
boolean state = intent.getBooleanExtra("terminate", false);
mSafeShutdown = state;
}
else if (mUpdater != null && mUpdater.isRunning()) {
Log.d(TAG, "activity force closed?" +
" Attempting to handle service thread shutdown safely...");
mUpdater.isRunning(false);
try {
mUpdater.join();
} catch (InterruptedException e) {
Log.e(TAG,"Service s UpdaterThread couldn t join");
}
}
return START_STICKY;
}
然而,这造成了我为活着提供的服务——
static final int DELAY = 2000;
public void run() {
while (mIsRunning) {
if (!mJobQueue.isEmpty()) {
//do work
}
else if (mSafeShutdown) {
mIsRunning = false;
stopSelf();
}
else {
sleep(DELAY);
}
}
}
部队关闭使这一局面脱节,难以确切了解正在发生什么。 是否有更好的/宽松的办法告诉我,申请已经关闭?