【发布时间】:2018-07-02 19:13:12
【问题描述】:
我有一个正在运行的应用程序,它接收蓝牙低功耗通知并通过在异步线程中将数据发送回源来响应。我注意到在 Android 8 下,该应用程序在推送到后台时与发送的数据一起暂停。是否可以将其关闭,或者我是否需要将应用程序作为服务进行改进,并且该应用程序是否会继续接收蓝牙回调,例如特性更改通知?
更新 1。我无法让运行 Oreo 的真实设备来测试后台睡眠,因此我创建了一个运行 8.1 的虚拟 Pixel 2,并在 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();
【问题讨论】:
标签: android android-asynctask bluetooth-lowenergy background-thread