Как прекратить поток демона в Android без принудительного закрытия приложения? - PullRequest
0 голосов
/ 02 марта 2012

Я использую файл jar для Android в своем приложении для Android.При вызове метода из этого jar создается поток демона.Мое приложение постоянно работает как сервис.Я хочу завершить работу этого демона без принудительного закрытия приложения при необходимости.Как мне этого добиться?Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

вы можете создавать конкретные процессы в вашем проекте. http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

Пусть одна из ваших служб будет собственным процессом, который будет убит после того, как вы вызовете функцию и сделаете то, что вам нужно, в то время как другая часть вашего проекта не будет затронута.

0 голосов
/ 12 ноября 2012

Если у вас нет доступа к источнику для потока демона, вы сможете остановить его с помощью Thread.interrupt();

Если у вас есть исходный код вашего потока демонов, он должен периодически просыпаться, чтобы протестировать свою среду. то есть, он должен пробудиться от того замка, который у него есть, и снова пройти через свой цикл. Затем вы просто добавляете логическое значение внутри цикла, чтобы проверить, должно ли оно завершиться или нет.

public void run(){
  running = true;
  while(running){
     // do your wait task
  }
}

public void cancel(){
    running = false;
}

У многих вещей, которые блокируют, есть флаг, который определяет, как долго ждать, например, ServerSocket.

В целом основные принципы Java для обработки потоков также работают и в Android, главное отличие в том, что чем сильнее вы работаете с устройством, тем хуже производительность. Вот небольшая ссылка, которая содержит некоторую информацию об остановке потоков.

http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

См. Раздел на Thread.stop ().

0 голосов
/ 02 марта 2012

Может быть, создать простое действие или простой виджет с одной кнопкой, которую вы можете использовать для переключения вашего демона?

...