В одном действии я определяю следующий слушатель кнопок:
final Button button = (Button) findViewById(R.id.buttonExit);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
stopService(new Intent(StartupActivity.this, SamcomService.class));
finish();
}
});
Как вы можете видеть, кнопка должна остановить запущенную службу (созданную на предыдущем шаге), а затем завершить себя.
Когда я нажимаю кнопку, Service.onDestroy выполняется так, как ожидалось. В onDestroy я делаю уборку, а затем, наконец, вызываю super.onDestroy () :
@Override
public void onDestroy() { // the service onDestroy
// Do some cleaning
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancel(1);
// more cleaning
Toast.makeText(this, "The service has been stopped! Wii!", Toast.LENGTH_LONG).show();
super.onDestroy();
}
Я мой мир, это значит, что эта Служба мертва и похоронена вместе со всеми переменными в ней. Правильно?
Ну, это не похоже на это.
Смысл в том, что в моей службе есть строка, к которой я добавляю текст, прежде чем нажать кнопку, чтобы остановить службу. Примерно так:
public class SamcomService extends Service {
private String startupText = "";
private void addTextToStartup(String text)
{
startupText += text;
// Sending a broadcast, not relevant
// ...
}
// ...
}
Эта строка, startupText , не сбрасывается при следующем запуске приложения! Как будто Служба вообще не была убита. StartText содержит весь текст, который был добавлен в него при предыдущем запуске.
Почему это? Что мне не хватает? Служба не мертва? Когда я снова запускаю приложение, вызывается метод Service onCreate, подразумевая, что оно запускается с нуля ...
--- РЕДАКТИРОВАТЬ ---
Я только что прочитал это:
Что именно уничтожает onDestroy ()?
Это означает, что onDestroy действительно ничего не уничтожает. Правильный? Это довольно хромая, и очень раздражает. Одна хорошо посещенная тема здесь о SO, которую я создаю almsot 2 года назад, обсуждая эту проблему, я думаю ...:
Не одобряется ли выход из приложения?