`
xyz_lmn
  • 浏览: 65449 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android Service被关闭后自动重启,解决被异常kill 服务

 
阅读更多

Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。然后我们注意到这个函数有一个int的返回值,这篇文章就是简单地讲讲int返回值的作用。
从Android官方文档中,我们知道onStartCommand有4种返回值:

START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。


START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。


参考:http://www.eoeandroid.com/thread-169411-1-1.html


/**
* @author 张兴业
* 邮箱:xy-zhang#163.com
* android开发进阶群:278401545
*
*/

分享到:
评论

相关推荐

    Android如何保证自己的服务被系统kill后又被系统重启?

    要确保服务在被系统kill后能够自动重启,开发者需要采取一些策略。以下是一些关键知识点: 1. **START_STICKY**: 当服务被标记为`START_STICKY`时,如果系统因资源限制而停止服务,Android系统会在内存条件允许时...

    安卓后台服务相关-Service意外被kill利用监听来重新启动.rar

    本资料包"安卓后台服务相关-Service意外被kill利用监听来重新启动.rar"探讨了如何在Service被kill后利用监听机制来实现服务的自动重启,以确保服务的持续运行。 一、Service的基本概念 1. Service是Android四大组件...

    如何使Android app不被kill.docx

    - **自动重启Service**:如果Service被系统清理,可以通过监听特定广播事件(如屏幕解锁)自动重启Service。这种方式需要在Service的`onStartCommand()`方法中返回`START_STICKY`,表示即使Service被销毁也会尝试...

    Android 如何保证service在后台不被kill

    - `START_NOT_STICKY`:Service被kill后不会自动重启,除非有新的Intent触发startService。 - `START_REDELIVER_INTENT`:Service被kill后,系统会重新启动Service并传回最后一个Intent,确保未完成的任务得以继续...

    android关闭应用程序

    总之,在Android开发中,关闭应用程序或管理进程并非简单的一行代码所能解决的问题,它涉及到权限管理、资源释放、异常处理等多个方面。开发者应根据具体场景选择最合适的方法,并遵循最佳实践,以确保应用的稳定性...

    Android全局捕获崩溃异常记录日志保存至本地并定时删除

    为了解决这个问题,开发者通常会实现全局异常捕获机制,以便在程序崩溃时记录异常信息,并将这些日志保存到本地。此外,为了维护存储空间的有效利用,日志还需要定时清理。本文将详细介绍如何在Android中实现这一...

    Android双进程守护

    5. 权限管理:由于涉及系统级别的操作,可能需要请求一些特殊的权限,例如`android.permission.KILL_BACKGROUND_PROCESSES`,以允许你的服务终止其他进程。 6. 错误处理和调试:为了保证服务的稳定性和可靠性,务必...

    Android 实现彻底退出自己APP 并杀掉所有相关的进程

    这将杀死当前应用的进程,但是需要注意的是,ActivityManager 会监听进程的状态,一旦发现进程被非正常 Kill,它将会试图去重启这个进程。这就是为什么,有时候当我们试图这样去结束掉应用时,发现 app 会自动重新...

    android开发timeout出错的详解

    如果有设备列出,但安装仍失败,尝试用`adb kill-server`和`adb start-server`命令重启adb服务。 10. **使用冷启动模拟器**: 避免热启动模拟器,即直接从上次关闭的状态恢复,而是选择“冷启动”,这样可以避免...

    Android應用開發環境

    如果遇到adb服务问题,如“daemon not running”错误,可以使用`adb kill-server`关闭服务,然后再重启。 DDMS,即Dalvik Debug Monitor Service,是Android开发环境中的另一个关键工具,它提供了丰富的调试功能。...

    Android计时器例子

    4. 在`onStartCommand`方法中返回适当的启动命令,这将决定服务在被杀死后如何重启。 接下来,我们讨论`广播接收器`(BroadcastReceiver)。广播接收器是一种可以监听系统或应用发出广播的组件。在这个计时器例子中...

    用ADB命令解决手机替换系统文件导致死机或无限重启.pdf

    在Android开发和调试过程中,经常遇到手机系统文件被替换后导致的设备死机或无限重启的问题。本文将详细介绍如何利用ADB(Android Debug Bridge)工具来解决这些问题,同时普及ADB的基础知识及其常用命令。 ADB是...

    Android程序完全退出的方法

    这种方法的优点在于它可以确保应用程序被干净地重启,但是缺点是需要用户的权限授予,可能会引起用户的注意。 #### 四、利用Activity生命周期:`Intent.FLAG_ACTIVITY_CLEAR_TOP` **方法概述:** 通过设置 `...

    android shell命令客户端-超级终端

    3. **执行操作**:运行如`ls -l`查看目录内容,`reboot`重启设备,或`stop service_name`停止指定服务等。 4. **获取root权限**:输入`su`,如果设备已root,将会切换到root用户,赋予所有权限。 **常用的Android ...

    Android在TQ2440开发板上的移植[归纳].pdf

    Android操作系统被广泛应用于各种设备,包括智能手机、平板电脑以及各种嵌入式系统。TQ2440开发板是一款基于Samsung S3C2440处理器的嵌入式开发平台,具有较高的性能和灵活性,适合进行Android系统的移植和应用开发...

    Android应用源码之强行结束APP进程的方法.zip

    在Android系统中,应用程序的生命周期是由操作系统管理的,但有时候开发者可能需要在特定情况下手动结束APP的进程。本文将深入探讨如何在Android应用源码中实现这一功能,以"强行结束APP进程的方法"为主题,我们将从...

    android 强行结束APP进程的方法.zip

    Android提供了`ActivityManager`类,它是用来管理Android系统的活动(Activity)和服务(Service)的。我们可以通过它的`killBackgroundProcesses()`方法来结束一个应用的后台进程。此方法需要`KILL_BACKGROUND_...

    [计算机软件及应用]Android开发者指南.doc

    - `adb emu kill`:关闭模拟器。 - `adb emu start`:启动模拟器。 - `adb shell`:进入设备的shell环境,可以执行各种Linux命令。 四、调试与性能分析: - `adb jdwp`:列出所有正在运行的Java调试协议(JDWP...

Global site tag (gtag.js) - Google Analytics