当前位置:编程学习 > wap >>

android service里的易做图 关闭屏幕就没了

求教啊

service里的易做图 报错
不关屏幕没事 关了就坚挺不倒了


报错如下 : 
unregisterListener:: all sensors,  listener=com.lingzerg.hnf.step.StepDetector@4059ad08
=======>>>Sensor Thread RUNNING <<<========

E/SensorManager(5231): reg :: handle = 0

太费解了
只有少量手机有这个问题
大部分手机都没事  --------------------编程问答-------------------- 这个没办法处理,这是框架系统的处理,休眠前关闭所有非系统的应用。 --------------------编程问答--------------------
引用 1 楼  的回复:
这个没办法处理,这是框架系统的处理,休眠前关闭所有非系统的应用。


可是有些手机就没事啊
比如ME525 我有设置禁止休眠CPU
关闭屏幕无效啊

大部分手机都没事
就少量手机会这样 --------------------编程问答-------------------- 你注册的是什么listener?看看用foreground service能不能解决, --------------------编程问答--------------------
引用 3 楼  的回复:
你注册的是什么listener?看看用foreground service能不能解决,


嗯啊 我注册的就是 SensorEventListener
是让一个类继承过去的


我把代码发出来

这里是service里的初始化传感器


private void registerDetector() { 
   Log.v(TAG, "registerDetector"); 
   mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
   
   Log.v(TAG, String.valueOf(Sensor.TYPE_ACCELEROMETER)); 
   mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
   mSensorManager.registerListener(mStepDetector,mSensor,SensorManager.SENSOR_DELAY_FASTEST); 




唤醒CPU


private void acquireWakeLock() { 
    Log.v(TAG, "acquireWakeLock"); 
     
     PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     int wakeFlags; 
     if (wakeAggressively()) { 
         wakeFlags = PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP; 
         
     } 
     else if (keepScreenOn()) { 
         wakeFlags = PowerManager.SCREEN_DIM_WAKE_LOCK; 
     } 
     else { 
         wakeFlags = PowerManager.PARTIAL_WAKE_LOCK; 
     } 
     wakeLock = pm.newWakeLock(wakeFlags, TAG); 
     wakeLock.acquire();   
     


public boolean wakeAggressively() { 
   Log.v(TAG, "wakeAggressively"); 
   return mSettings.getString("operation_level", "run_in_background").equals("wake_up"); 


public boolean keepScreenOn() { 
   Log.v(TAG, "keepScreenOn"); 
    return mSettings.getString("operation_level", "run_in_background").equals("keep_screen_on"); 




监听事件:


public class StepDetector implements SensorEventListener
--------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼  的回复:
引用 1 楼  的回复:

这个没办法处理,这是框架系统的处理,休眠前关闭所有非系统的应用。


可是有些手机就没事啊
比如ME525 我有设置禁止休眠CPU
关闭屏幕无效啊

大部分手机都没事
就少量手机会这样


是的,所以说没办法处理,由于是开源,Android的框架被各手机厂商改成各自的分格,所以有些可以,有些不可以,换句话说就是兼容性问题,没办法100%兼容。
补充:移动开发 ,  Android
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,