Android--Activity Service 生命周期

Activity生命周期

Activity生命周期图

简单的介绍一下:
onCreate(Bundle savedInstanceState):创建Activity的时候调用,里边还有Bundle保存有以前的状态
onStart(): activity屏幕可见时候调用
onResume():activity可以和用户交互是调用,用户可以输入或者点击屏幕了,无论启动或者重启一个activity都要调用到该方法
onPause():activity被暂停或者收回CPU和其他资源时候调用,该方法可以用于保护活动状态
onStop():activity被停止并且转为不可见及后续的生命周期的时候调用
onRestart():重新启动activity时候调用,该活动仍在堆栈中不是新建一个活动
onDestory():activity被完全从内存中移除时候调用

启动时候:onCreate-->onStart-->onResume
退出时候finish:onPause-->onStop-->onDestory
home键返回主菜单:onPause-->onStop
重新启动:onRestart-->onStart-->onResume

Service生命周期

服务分为:被启动服务 和 绑定服务

@Override
	public void onCreate() {
		super.onCreate();
		Log.d("-Service-", "-onCreate--");
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		Log.d("-Service-", "-onStartCommand--");
		return super.onStartCommand(intent, flags, startId);
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		Log.d("-Service-", "-onDestroy--");
	}

	@Override
	public IBinder onBind(Intent intent) {
		Log.d("-Service-", "-onBind--");
		return new MyBinder();
	}

	@Override
	public boolean onUnbind(Intent intent) {
		Log.d("-Service-", "-onUnbind--");
		return super.onUnbind(intent);
	}

	@Override
	public void onRebind(Intent intent) {
		super.onRebind(intent);
		Log.d("-Service-", "-onRebind--");
	}

被启动的服务:启动 onCreate --> onStartCommand  停止:onDestory
绑定服务:启动onCreate --> onBind   停止:onUnbind --> onDestory
混合开启:启动onCreate-->onStartCommand-->onBind  停止:onUnbind-->onDestory

Service尽可能存活

1.让Service杀不死。Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身。

2.让Service从后台变成前置。在Android 2.0以前有效,借助setForeground(true)。

3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程)。add android:persistent="true" into the <application> section in your AndroidManifest.xml 。切记,这个 不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。 通过实验发现即使设置了这个属性,应用程序被force kill之后还是不能重新启动起来的,应该是只对low memory killer免疫。

4.提升Service优先级。在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,避免Service被系统回收。

5.定时唤醒,通过AlarmManager。(在Android 4.0之前有效,4.0之后被强杀的APP无法唤醒 参考http://www.android100.org/html/201305/06/2430.html)。

6.当应用升级之后,即使用户不点开APP,也要重启服务。因为升级APP时会发送ACTION_PACKAGE_RESTARTED,AlarmManager作为系统服务,会接受这个事件,然后startService。

7.让Service开机启动。不过现在很多手机会禁止开机启动。

8.守护进程。参考http://www.bubuko.com/infodetail-474019.html




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值