我正在尝试在 android 中开发一个应用程序,其中包含一个读取多个小时传感器值的服务。当我启动服务时,我的设备挂起,所有其他进程都变慢。为了解决这个问题,我尝试在单独的线程中启动服务,如下所示,但问题仍然存在。
new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(getApplicationContext(), SensorService.class);
startService(intent);
}
}).start();
该线程仅在不同线程中启动服务,但服务在主线程中运行。
请有人帮助我如何在单独的线程中运行服务?
应用程序组件(服务、活动等)始终在主线程中运行,无论它们是从哪个线程启动的。
考虑在您的服务中启动线程,或者使用IntentService
.
在您的特定情况下,您可能会尝试注册一个全局BroadcastReceiver
对于传感器的变化,这反过来又会启动IntentService
将新获取的值放入数据库等中
实际上,链接在这里 https://stackoverflow.com/questions/5240246/broadcastreceiver-for-location解决了类似的问题。
再次强调,这并不是真正的多线程问题。整个任务必须以另一种方式实施。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)