项目需要在后台获取GPS经纬度。当用户对手机有一段时间没有操作后,屏幕(Screen)将从高亮(Bright)变为暗淡(Dim),如果再过段时间没操作,
屏幕(Screen)将又由暗淡(Dim)变为不显示(Off),如果再过段时间没操作,CPU将sleep,从on变为off.这时服务会被杀死。
输出log:

网络给出很多种解决方法有横竖屏还有输入输出没close,创建太多对象等,但是发现不做任何实质操作只开启一个服务,锁屏后一段时间也会出现上面log。
之后尝试过:
    1.休眠后,手机闹钟服务定时触发后台服务无效。
    2.长时间休眠后,注册动态广播监听app被移除无效。
    3.长时间休眠后,后台服务被销毁时触发重启服务无效,根本没有进入ondestory()方法。
    4.WAKE_LOCK无效。
还有就是一个解决办法是开启前台服务但是会一直有通知。最后综合思路是:
1监听用户锁屏。
2.锁屏时打开前台广播,解锁时打开后台广播。
监听用户锁屏时必须是动态注册在manifest中无效。
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(MyBroadCastReciever, screenStateFilter) BroadcastReceiver MyBroadCastReciever = new BroadcastReceiver() { @Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Log.i("application", "Screen went OFF");
Toast.makeText(context, "screen OFF", Toast.LENGTH_LONG).show();
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.i("application", "Screen went ON"); Toast.makeText(context, "screen ON", Toast.LENGTH_LONG).show();
}
}
};
然后就是前台服务就是在service的onStartCommand中加入
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setPriority(Notification.PRIORITY_MIN);// 设置该通知优先级
// mBuilder.setSmallIcon(R.drawable.gpsblue);
Notification notification = mBuilder.build();
startForeground(1, notification);

startForeground(1, notification);方法中参数是0,前台服务是无效的;传1是有效的。所以监听锁屏时,锁屏开启服务传1。这样service是前台的一直运行,但是看不到通知。屏幕亮时服务传0,service不容易被杀死。

Android长时间后台运行Service的更多相关文章

  1. APP长时间后台运行

    *  参考:http://www.nivalxer.com/archives/187 首先,我要说明的是在iOS中,一般应用程序在后台挂起之后仅拥有3分钟时间来处理相应的未完成事件,但是3分钟之后就会 ...

  2. 实现iOS长时间后台的两种方法:Audiosession和VOIP(转)

    分类: Iphone2013-01-24 14:03 986人阅读 评论(0) 收藏 举报 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App ...

  3. 实现iOS长时间后台的两种方法:Audiosession和VOIP

    http://www.cocoachina.com/applenews/devnews/2012/1212/5313.html 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在 ...

  4. iOS 和 Android 中的后台运行问题

    后台机制的不同,算是iOS 和 Android的一大区别了,最近发布的iOS7又对后台处理做了一定的更改,找时间总结一下编码上的区别,先做个记录. 先看看iOS的把,首先需要仔细阅读一下Apple的官 ...

  5. ios之申请后台延时执行和做一个假后台的方法(系统进入长时间后台后,再进入前台部分功能不能实现)

    转自:http://sis hu ok.com/forum/blogCategory/showByCategory.html?categories_id=138&user_id=10385   ...

  6. Android 实现Activity后台运行

    有时需要让activity在后台运行,具体实现方法如下: 在AndroidManifest.xml中,activity属性中增加: android:theme="@style/Backgro ...

  7. android 后台运行service实现和后台的持续交互

    在项目中有这么一种需求 需要后台开启服务,时刻记录用户和软件的交互行为,一旦交互发生,就向服务器测发送一条消息 解决方案: 一.创建一个service服务类 在service中开启一个线程,servi ...

  8. Android 长时间运行任务说明

    android 4.0 后,小米手机需要授权 自动启动 (在安全中心权限里设置),不然AlarmManager设置系统闹钟将不起作用

  9. Android长时间定时任务实现

    在服务的onStartCommand方法里面使用AlarmManager 定时唤醒发送广播,在广播里面启动服务 每次执行startService方法启动服务都会执行onStartCommand 1.服 ...

随机推荐

  1. 图片转base64

    function convertImgToBase64(url, callback, outputFormat){ var canvas = document.createElement('CANVA ...

  2. .NET (一)委托第一讲:什么是委托

    1.为什么要使用委托? 生活中的委托就是委托他人帮我们去办一件事情,程序中的委托类似.看下面的例子 class Class1 { static void Main(String[] args) { L ...

  3. Nginx配置文件说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释: #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_processes  1 ...

  4. 第三次作业:caculator

    第三次作业 作业链接 ********* 遇到的问题: Scan类: 队列的使用方法不了解,上网查询并自己练习了一下才初步了解,才运用到作业 . 判断数字用的 if (input[i] >= ' ...

  5. iOS7——UIControlEventTouchDown延迟响应问题

    问题描述 在iOS7下开发,真机调试时,UIButton的其他事件响应都正常,但是UIControlEventTouchDown事件响应会延迟,而且不同响应区域发生的延时情况不同,有时延迟1s以后响应 ...

  6. MAC系统生成RSA公钥私钥

    进入openssl然后主要就是三条命令: 1.genrsa -out rsa_private_key.pem 1024 这句是生成原始私钥文件 2.pkcs8 -topk8 -inform PEM - ...

  7. mysql5.7忘记密码

    注意:mysql5.7 user表密码字段由password改为authentication_string 1.service mysql stop 2.mysqld_safe --skip-gran ...

  8. Linux 查找文件

    find 查找目录 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 l ...

  9. IDL中的HRESULT值

    IDL中的HRESULT值

  10. [转帖]FPGA开发工具汇总

    原帖:http://blog.chinaaet.com/yocan/p/5100017074 ----------------------------------------------------- ...