该应用程序用于在华硕10英寸平板电脑从平坦的水平位置旋转到垂直位置时打开屏幕。它使用startService()方法启动服务。该服务启动广播接收器以进行屏幕打开接收器使用意图将屏幕更改事件传递给服务。 屏幕熄灭时,将启动用于定向的传感器。当其中一个x,y,z值发生变化表示垂直时,屏幕会亮起。
问题是,过程停止并在30分钟后再次启动。不调用onDestroy()方法。启动的服务没有启动传感器,因此需要重新启动传感器服务以使应用程序继续工作。 如果使用null intent调用onStartCommand()方法并且屏幕关闭,我可以通过启动传感器为应用程序提供解决方法。
我还没有添加通知代码。这会解决问题吗?
我的平板电脑有一个狡猾的电源开关,我宁愿不要使用太多。我安装了Shake程序,但需要大量电池。到目前为止,我的代码没有显示在电池使用列表中。
答案 0 :(得分:1)
有一些事情可以想到:
首先,您无意中调用了startService。即使您的服务已在运行,这也将执行onstartComand。这可能会重置某些值。
其次,你的设备在ram上很低,并且os会杀死你的服务以释放一些ram。当有更多内存时,如果它是粘性的,操作系统将启动你的服务。
Thrid,有一个未被捕获的异常,导致您的服务崩溃。
请记住,不保证会调用onDestroy方法。