У меня есть работающее приложение, которое получает уведомления о низком энергопотреблении Bluetooth и отвечает, отправляя данные обратно источнику в асинхронном потоке. Я заметил, что под Android 8 приложение приостанавливается вместе с отправкой данных в фоновом режиме. Можно ли это отключить или мне нужно обновить приложение в качестве службы, и будет ли приложение продолжать получать ответные вызовы Bluetooth, такие как уведомления об изменении характеристик?
Обновление 1. Я не могу получить реальное устройство под управлением Oreo для тестирования фонового сна, поэтому я создал виртуальный Pixel 2 под управлением 8.1 и запустил следующий код в onCreate (). Удивительно, но фоновый поток продолжает работать вовремя даже после открытия приложений для телефона и браузера.
Thread workThread = new Thread(new Runnable()
{
public void run()
{
int i = 0;
try
{
while (true)
{
Log.d(LOGTAG, "Work Thread: " + i++);
Thread.sleep(500);
}
}
catch (InterruptedException ie)
{
Log.d(LOGTAG, "Work Thread interrupted");
}
catch(Exception e)
{
Log.d(LOGTAG, "Work Thread error: " + e.toString());
}
Log.d(LOGTAG, "Work thread stopped");
}
});
workThread.start();