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
*
*/
分享到:
相关推荐
要确保服务在被系统kill后能够自动重启,开发者需要采取一些策略。以下是一些关键知识点: 1. **START_STICKY**: 当服务被标记为`START_STICKY`时,如果系统因资源限制而停止服务,Android系统会在内存条件允许时...
本资料包"安卓后台服务相关-Service意外被kill利用监听来重新启动.rar"探讨了如何在Service被kill后利用监听机制来实现服务的自动重启,以确保服务的持续运行。 一、Service的基本概念 1. Service是Android四大组件...
- **自动重启Service**:如果Service被系统清理,可以通过监听特定广播事件(如屏幕解锁)自动重启Service。这种方式需要在Service的`onStartCommand()`方法中返回`START_STICKY`,表示即使Service被销毁也会尝试...
- `START_NOT_STICKY`:Service被kill后不会自动重启,除非有新的Intent触发startService。 - `START_REDELIVER_INTENT`:Service被kill后,系统会重新启动Service并传回最后一个Intent,确保未完成的任务得以继续...
总之,在Android开发中,关闭应用程序或管理进程并非简单的一行代码所能解决的问题,它涉及到权限管理、资源释放、异常处理等多个方面。开发者应根据具体场景选择最合适的方法,并遵循最佳实践,以确保应用的稳定性...
为了解决这个问题,开发者通常会实现全局异常捕获机制,以便在程序崩溃时记录异常信息,并将这些日志保存到本地。此外,为了维护存储空间的有效利用,日志还需要定时清理。本文将详细介绍如何在Android中实现这一...
5. 权限管理:由于涉及系统级别的操作,可能需要请求一些特殊的权限,例如`android.permission.KILL_BACKGROUND_PROCESSES`,以允许你的服务终止其他进程。 6. 错误处理和调试:为了保证服务的稳定性和可靠性,务必...
这将杀死当前应用的进程,但是需要注意的是,ActivityManager 会监听进程的状态,一旦发现进程被非正常 Kill,它将会试图去重启这个进程。这就是为什么,有时候当我们试图这样去结束掉应用时,发现 app 会自动重新...
如果有设备列出,但安装仍失败,尝试用`adb kill-server`和`adb start-server`命令重启adb服务。 10. **使用冷启动模拟器**: 避免热启动模拟器,即直接从上次关闭的状态恢复,而是选择“冷启动”,这样可以避免...
如果遇到adb服务问题,如“daemon not running”错误,可以使用`adb kill-server`关闭服务,然后再重启。 DDMS,即Dalvik Debug Monitor Service,是Android开发环境中的另一个关键工具,它提供了丰富的调试功能。...
4. 在`onStartCommand`方法中返回适当的启动命令,这将决定服务在被杀死后如何重启。 接下来,我们讨论`广播接收器`(BroadcastReceiver)。广播接收器是一种可以监听系统或应用发出广播的组件。在这个计时器例子中...
在Android开发和调试过程中,经常遇到手机系统文件被替换后导致的设备死机或无限重启的问题。本文将详细介绍如何利用ADB(Android Debug Bridge)工具来解决这些问题,同时普及ADB的基础知识及其常用命令。 ADB是...
这种方法的优点在于它可以确保应用程序被干净地重启,但是缺点是需要用户的权限授予,可能会引起用户的注意。 #### 四、利用Activity生命周期:`Intent.FLAG_ACTIVITY_CLEAR_TOP` **方法概述:** 通过设置 `...
3. **执行操作**:运行如`ls -l`查看目录内容,`reboot`重启设备,或`stop service_name`停止指定服务等。 4. **获取root权限**:输入`su`,如果设备已root,将会切换到root用户,赋予所有权限。 **常用的Android ...
Android操作系统被广泛应用于各种设备,包括智能手机、平板电脑以及各种嵌入式系统。TQ2440开发板是一款基于Samsung S3C2440处理器的嵌入式开发平台,具有较高的性能和灵活性,适合进行Android系统的移植和应用开发...
在Android系统中,应用程序的生命周期是由操作系统管理的,但有时候开发者可能需要在特定情况下手动结束APP的进程。本文将深入探讨如何在Android应用源码中实现这一功能,以"强行结束APP进程的方法"为主题,我们将从...
Android提供了`ActivityManager`类,它是用来管理Android系统的活动(Activity)和服务(Service)的。我们可以通过它的`killBackgroundProcesses()`方法来结束一个应用的后台进程。此方法需要`KILL_BACKGROUND_...
- `adb emu kill`:关闭模拟器。 - `adb emu start`:启动模拟器。 - `adb shell`:进入设备的shell环境,可以执行各种Linux命令。 四、调试与性能分析: - `adb jdwp`:列出所有正在运行的Java调试协议(JDWP...