У меня есть Служба, которая запускает Thread и Runnable, как это.
t = new Thread(new Runnable() {
public void run() {
doSomething();
}
});
t.start();
Причиной потока является выполнение задачи Async doSomething(). Пока давайте не будем беспокоиться о другом классе AsyncTask. Я пробовал это, и это не работает для моего дела. Изменить: я не могу использовать AsyncTask, потому что он предназначен только для потока пользовательского интерфейса. Этот кусок кода должен работать внутри Сервиса, поэтому нет, нет AsyncTask: (
doSomething() содержит некоторые внешние библиотеки, поэтому проблема, с которой я сталкиваюсь, заключается в том, что ее можно потенциально повесить на одну из команд, без возврата какого-либо значения (следовательно, проверка ошибок даже не может быть выполнена)
Чтобы обойти это, я захочу, в какой-то момент, уничтожить Службу.
stopService(new Intent("net.MyService.intent));
Это прекрасно работает и легко проверяется по телефону. Тем не менее, Thread, который был создан выше, будет продолжать работать, даже когда Служба, которая породила его, будет уничтожена.
Поэтому я ищу правильные команды для вставки в Сервис onDestroy(), который очистит Thread для меня.
t.destroy();
t.stop();
обе амортизируются и вызывают сбои приложений.
Я взял этот код откуда-то
@Override
public void onDestroy() {
Thread th = t;
t = null;
th.interrupt();
super.onDestroy();
}
но он все равно не работает, поток продолжает работать. Любая помощь ребятам?