进程的优先级&为什么使用服务

1.      服务: 长期后台运行的没有界面的组件

2.      不容易被回收掉,即使因内存不足回收,也会在内存充足时创建

3.      android应用:什么地方需要用到服务?

         天气预报:后台的连接服务器的逻辑,每隔一段时间 获取最新的天气信息

         股票显示:后台的连接服务器的逻辑,每隔一段时间 获取最新的股票信息

          mp3播放器: 后台长期的播放音乐。

3.  android系统进程管理是按照一定的规则的:

        1.应用程序一旦被打开 通常情况下关闭(清空任务栈)后进程不会停止。方便

        下一次快速启动。带来内存不足的问题。

        2.Android系统有一套 内存清理机制。 按照优先级去回收系统的内存。

4.  进程分为5个等级的优先级:(从高到低)

       1.Foreground process 前台进程  用户正在玩的应用程序对应的进程

       2.Visible process 可视进程      用户仍然可以看到这个进程的界面。

       3.Service process服务进程      应用程序有一个服务组件在后台运行。

       4.Background process 后台进程  应用程序没有服务在运行 并且最小化 (activity onstop)

       5.Empty process 空进程        没有任何运行的activity, 任务栈空了

1.      使用子线程在后台工作,如果程序关闭,就会清空任务栈,该进程变成空进程,如果手机内存不足,安卓系统会清掉线程。

2.      长期后台运行的组件, 不要在activity开启子线程,应该是创建服务,在服务里面开启子线程。

3.  服务的目的:

          1.长期后台运行。

          2.提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,把进程重新创建。


例子代码

配置文件:

<service android:name="com.itheima.testservice.MyService"/>

新建服务类:

public class MyService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	//oncreate ondestory onstart onstop onresume onpause
	//服务没有界面 
        //服务只会创建一次
	@Override
	public void onCreate() {
		System.out.println("服务创建了");
		super.onCreate();
	}
	//可以开启多次
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		System.out.println("服务接收到了开启指令");
		return super.onStartCommand(intent, flags, startId);
	}
	
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		System.out.println("服务销毁了");
		super.onDestroy();
	}
}


开启服务:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void click(View view){
		Intent intent = new Intent(this,MyService.class);
		startService(intent);
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值