在Android系统中,服务(Service)是一种用于在后台执行长时间运行操作而不与用户交互的组件。"杀不死的服务"通常是指那些设计成即使在后台或者用户退出应用后也能持续运行的服务,常见于即时通讯(IM)应用,如微信、QQ等,确保消息能够及时传送。在Android开发中,创建一个持久性服务是一项关键任务,因为Android系统可能会为了优化资源管理而自动停止或杀死一些后台服务。 我们来了解Android服务的基本概念。在AndroidManifest.xml文件中声明服务,并在代码中通过startService()或bindService()启动。服务生命周期由onCreate()、onStartCommand()、onBind()、onUnbind()和onDestroy()等方法组成。默认情况下,如果系统资源紧张,Android会尝试终止服务以释放资源,但这对于即时通讯应用是不可接受的。 为了创建一个“杀不死”的服务,开发者通常会采用以下策略: 1. **Foreground Service**:将服务升级为前台服务,通过显示一个通知来告知用户服务正在运行。这样,系统会认为这个服务对用户非常重要,不太可能轻易被杀死。在onStartCommand()方法中返回START_STICKY或START_NOT_STICKY常量并启动一个通知。 2. **自启服务**:利用BroadcastReceiver监听系统的开机广播,使得服务能在设备启动时自动恢复运行。但这需要用户在应用设置中赋予相应的权限。 3. **定期唤醒**:使用AlarmManager配合PendingIntent定期唤醒服务执行任务,确保即使服务被杀死,也能在指定时间重新启动。 4. **JobScheduler/WorkManager**:对于API 21及以上的设备,可以使用JobScheduler或WorkManager来安排后台任务,它们会在满足特定条件(如网络可用或电量充足)时执行,一定程度上保证了服务的执行。 5. **前台进程优先级**:如果服务所在的进程被标记为前台进程,那么它将优先保留,因为Android会优先考虑后台进程的回收。这可以通过让服务持有一个活跃的 Binder 连接或者让服务成为另一个前台组件(如Activity)的一部分来实现。 6. **内存驻留技术**:某些高级技巧,如使用AIDL、ServiceConnection等使服务保持活动状态,但这可能导致系统资源过度消耗,需谨慎使用。 尽管上述方法可以提高服务的存活率,但需要注意的是,过度使用这些技巧可能会引起电池消耗增加、用户体验下降等问题,甚至可能因违反Google Play政策而被拒绝上架。因此,在设计“杀不死的服务”时,应权衡性能、功耗和用户需求,确保服务的合理性和必要性。 Android“杀不死的服务”是通过一系列技术手段来确保后台服务在各种条件下持续运行,以满足即时通讯等应用的实时性需求。然而,开发者需要遵循最佳实践,以平衡应用的效率和用户的体验。
























































































































- 1

- 爱程絮2015-07-30坑死了,根本没效果,程序启动,后台清理一下就死掉了,没有重启过。o(︶︿︶)o 唉

- 粉丝: 43
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机信号发生器设计及仿真.doc
- 电子商务专业自评分析报告(专业刨析材料).doc
- 软件工程考试题含答案.doc
- 高中数学-第四章-导数及其应用-4.2-导数的运算-4.2.3-导数的运算法则-湘教版选修2.ppt
- 计算机软件中的插件技术及应用.docx
- 虚拟技术在计算机实验机房建设中的应用.docx
- 关于网络环境下信息技术课堂教学模式的探究.docx
- 计算机网络实验报告.doc
- 职称计算机考试基础知识章节试题及答案.doc
- PLC简单应用(1).doc
- 堆栈队列字符串匹配相关算法实现.doc
- JAVAME大学本科方案设计书天气预报.doc
- PLC在机器人喷涂生产线控制中的应用.doc
- 论社会保险基金财务会计的信息化.docx
- Access2010数据库-模块与VBA程序设计(详解)演示文稿.pptx
- JSP网上拍卖系统设计方案与实现.doc


