本文主要是介绍《第一行代码-Android》学习笔记(十九),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.虽然每调用一次startService方法,onStartCommand就会被执行,但实际上每个服务都只会有一个实例,所以不管调用了多少次的start,最后只要一个stopService或者stopSelf就可以停止一个服务。
2.Android的规定,如果既调用了startService方法又调用了bindService方法,这个时候要想服务执行onDestory方法,必须让stopService和unbindService同时执行。
3.前台服务:由于服务的系统级别比较低,很有可能在系统内存不够的时候,服务被回收掉。
这个时候就可以用到前台服务。
① 前台服务与普通服务的区别就是:前台服务会一直有一个图标在系统的状态栏显示,下拉状态栏之后可以看到更加详细的信息。
② 如何创建前台服务:只要改写一下普通服务的onCreate方法即可,在里面加入一个Notification,与在其他地方创建notification不一样的是,这里使用的是startForeground()方法来展示这个notification,而不是通过notificationManager。
public void onCreate(){
super.onCreate();
Log.d("gu", "create");
Notification notification = new Notification(R.drawable.ic_launcher, "Notification comes",
System.currentTimeMillis());
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(this, "This is title", "This is content", pi);
startForeground(1, notification);
}
③ 当Service被destory的时候,上面的notification也会被结束
4.在Service中开启线程执行耗时任务之后,如果任务执行成功了,如何让服务停止:
可以再子线程结束的地方执行:stopSelf()方法;
5.使用IntentService:这个类是个抽象类,它再其内部封装了创建子线程的过程,只要我们写一个子类继承它,就可以轻松实现在service中创建线程操作,并将一些操作放在其onHandleIntent方法中执行即可。
① IntentService的onHandleIntent()方法中的子线程任务执行完毕之后,会自动停止服务。
这篇关于《第一行代码-Android》学习笔记(十九)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!