Android 如果我没有';不创建线程?
我正在创建一个Android 如果我没有';不创建线程?,android,multithreading,service,wakelock,Android,Multithreading,Service,Wakelock,我正在创建一个服务,该服务将被设置为开始使用AlarmManager(使用已用\u REALTIME\u WAKEUP)。我在onStartCommand方法中进行所有处理,主要原因是: 不需要很长时间(从磁盘读取小文件,可能通过NotificationManager推送通知) 如果需要,我可以轻松地将其设置为在单独的过程中启动 在这种情况下,我还需要获得唤醒锁吗 据我所知,只有在创建单独的线程时,才能获得WakeLock(因为操作系统会将主线程视为空闲线程并进入睡眠状态)。这是真的还是我仍然冒
服务
,该服务将被设置为开始使用AlarmManager
(使用已用\u REALTIME\u WAKEUP
)。我在onStartCommand
方法中进行所有处理,主要原因是:
NotificationManager
推送通知)因此,要做到这一点,您需要有一个警报发送到的接收器,在该接收器中获取唤醒锁,然后调用startService()让服务执行,并确保在服务完成之前不会释放唤醒锁。是的,对不起,这太糟糕了(我认为Mark或其他人可能对此有帮助代码
简化这一过程的一种方法是只关心服务已经运行时会发生什么。Context.peek服务()可以在onReceiveIntent()中使用要获取当前正在运行的服务,您可以在接收器中调用它,以便在保持唤醒锁的同时执行关键代码。此外,如果您在同一进程中使用这些服务的常见情况,则可以使用服务文档中显示的相同技巧直接调用它,而无需编写aidl文件。“我想Mark或其他人可能对此有帮助程序代码。”--这可能指的是我的
WakefulIntentService
: