1. Service是什么
如果一些功能耗时很长,那么最好不用Activity,这样会造成其它进程的阻塞。它是一个应用程序组件,没有图形化界面,通常就是针对那些耗时比较长的操作。它既然是在后台一直运行,那么一些诸如下载,播放mp3,更新ui,更新ContentProvider,发送intent,以及启动系统通知等等这些操作都可以通过它来完成。
2. Service不是什么
Service 不是一个单独的进程(有自己的一份资源,一个进程最少有一个线程,而一个应用程序最少有一个进程)
Service也不是一个线程(和其它线程共享一份资源),其实它在主线程内,如果service阻塞了,那么整个应用程序也就没有响应。
3.使用service的方法
创建一个Service的类,继承Service类,实现其中的onBind方法,onCreate,onStartCommand,onDestroy方法,当第一调用的时候onCreate方法会被调用,之后再调用就不会再调用onCreate方法了,而是调用onStartCommand。
如果你想开启一个服务的话,必须在activity中开启,因为服务和activity在一个进程,如果你想做一些耗时的操作,那么在onStart方法中重新开启一个线程来做这个事情
如果一些功能耗时很长,那么最好不用Activity,这样会造成其它进程的阻塞。它是一个应用程序组件,没有图形化界面,通常就是针对那些耗时比较长的操作。它既然是在后台一直运行,那么一些诸如下载,播放mp3,更新ui,更新ContentProvider,发送intent,以及启动系统通知等等这些操作都可以通过它来完成。
2. Service不是什么
Service 不是一个单独的进程(有自己的一份资源,一个进程最少有一个线程,而一个应用程序最少有一个进程)
Service也不是一个线程(和其它线程共享一份资源),其实它在主线程内,如果service阻塞了,那么整个应用程序也就没有响应。
3.使用service的方法
创建一个Service的类,继承Service类,实现其中的onBind方法,onCreate,onStartCommand,onDestroy方法,当第一调用的时候onCreate方法会被调用,之后再调用就不会再调用onCreate方法了,而是调用onStartCommand。
这里要做一个区别,就是context.startService和context.bindService的用法和方法调用的顺序是不一样的。startService用于service本身和context(通常是activity)无关的情况,也就是说即使context退出了,service仍然会继续运行。而bindService不一样,如果context退出了,那么service也就中断了。
比如下载啊,发送啊,监听啊什么的,最好是用startService,用户可能点击了下载又去其它界面干别的事情了。这样的话就相当于context退出了,如果使用bindService的话下载发送这些就停了。
其实Service也就相当于一个Activity的一部分,只是它不可见而已。它也是通过intent来进行启动,参数是当前activity和service,然后再调用startService就行。如果想停止,就调用stopService,同样使用intent。
其实Service也就相当于一个Activity的一部分,只是它不可见而已。它也是通过intent来进行启动,参数是当前activity和service,然后再调用startService就行。如果想停止,就调用stopService,同样使用intent。
如果你想开启一个服务的话,必须在activity中开启,因为服务和activity在一个进程,如果你想做一些耗时的操作,那么在onStart方法中重新开启一个线程来做这个事情
4. 关于notification等等service的使用
如果你想要获取系统的notification的权限,首先要创建一个NotificationManager的对象
NotificationManager nm =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
如果你想要获取系统的notification的权限,首先要创建一个NotificationManager的对象
NotificationManager nm =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);