У меня есть класс SendMessageService, который простирается от Сервиса. Этот класс отправляет сообщения чата на сервер в фоновом режиме. Должен ли я всегда должен позвонить stopSelf()
, когда я вернусь с моей службы?Когда мне нужно остановить службу вручную?
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null || !AppUtil.hasInternetConnection(this)) {
return START_STICKY;
}
startID = startId;
handler = new Handler();
messageDatabase = MessageDatabase.getInstance(this);
sendMessages();
return super.onStartCommand(intent, flags, startId);
}
Должен ли я называть stopself()
выше return START_STICKY
?
private void sendMessages() {
// get all unsend messages
new Thread() {
@Override
public void run() {
synchronized (lock) {
final ArrayList<Message> messages = new ArrayList<Message>();
messageDatabase.getConditionBuilder().add(DatabaseHelper.KEY_MESSAGE_SENT + " = ?",
new String[] { String.valueOf(0) });
messageDatabase.getConditionBuilder().setSortOrder(DatabaseHelper.KEY_MESSAGE_LOCAL_TIME + " ASC");
messages.addAll(messageDatabase.getList());
// ...
sendMessageRecursive(0, messages);
}
}
}.start();
}
private void sendMessageRecursive(final int index, final ArrayList<Message> messages) {
if (index >= messages.size()) {
stopSelf(startID);
return;
}
// ...
}
Должен ли я позвонить stopSelf()
в этой ситуации?