Service的应用思路

原创 2016年05月30日 20:17:37

-service 的作用:

                          与activity类似,都代表可执行的程序,service主要用于不需要与用户进行界面交互的场合,因为service没有界面。

service 的好处:

                           为避免Activity中的代码过多,使得代码不便于理解,可以将不需要于用户界面进行交互的代码写在Service中,

          便于自己和别人读取。 

 service启动的两种方式:

                     1.   startService()   方法                    2.bindService()方法

                   1.定义service的子类继承Service,在Service中定义oncreate()方法(在service被创建时回调,从此以后不再执行),定义onStartContent()方法

        (每次启动service时都会调用该方法,多次启动service时都会执行该方法), 在activity中,开启service,在合适的场合调用    startService();

                     service与访问者之间没有关联,即使访问者退出了,Service也仍然运行,所以必须调用stopService() 访问来停止service,防止发生OOM(内存溢出)

           最后销毁 onDestroy() ;

                    适用范围: 访问者与Service之间无法进行数据交换、通信。

                  

                   2.  public boolean bindService(Intent service, ServiceConnection conn, int flags) {
     
                                          return super.bindService(service, conn, flags);
                         }

                       在Activity中定义bindService() 方法(该方法只会执行一次), 其中他们的参数依次为

                                     (1)  service 为需要进行绑定的Service ;  

                                     (2).conn 为ServiceConnection对象,当service与activity连接成功后,会回调该对象的 onServiceConnected(ComponentName name,

                           IBinder service)方法   (其中service为在 Service类 中定义的IBinder对象) , 当发生异常终止后,会回调该对象的

                           onServiceDisconnected(ComponentName  name) 方法。

                       在Service类中,定义onCreate() 方法,定义IBinder  onBind(Intent intent)方法,在绑定Service的情况下,onBind(Intent intent)  方法返回的IBinder对象将会传给

              Activity类中的service参数,  这样访问者就可通过该IBinder对象与Service进行通信了(该IBinder对象为    继承Binder的子类(例 :MyBinder)所创建的对象)。

               然后就可以通过MyBinder 对象来访问Service的运行状态了,然后解除绑定  onUnbind()  ,最后销毁  onDestroy() 。


    service的生命周期:

          1. startService()    onCreate()    onStartCommand()(若多次启动则会一直调用) onStopService()(被访问者调用)   onDestroy() 

                  2.  bindService()    onCreate()    onBind()(与Service绑定)    onUnbind()   onDestroy()


           自己对service的一些见解,能力有限,写的不好,请多多指点。










如何实现跨应用启动Service

跨应用启动Service需要注意的地方有2点: 1.目标service需要声明exported=true 的属性,表示允许其他应用访问该服务. 2.android5.0之前是可以通过设置隐式意图来跨...
  • mChenys
  • mChenys
  • 2015年11月01日 23:03
  • 5637

Android -- 跨应用启动Service

本章博客,记录的是跨应用启动Service。 我们需要创建一个应用service1,其中包含一个MyService,部分代码如下: @Override public void onCr...
  • u010926176
  • u010926176
  • 2015年05月27日 16:08
  • 1221

启动另一个Activity、Service、应用程序

1、启动Activity Intent intent = new Intent(); intent.setClassName("com.android.settings", "com.android....
  • u010164190
  • u010164190
  • 2016年12月28日 17:15
  • 679

andoroid 在一个应用里面绑定另一个应用的服务service(实践通过)

今天在公司请教了下我的经验很足的同事,一个应用里面绑定另一个应用的服务service是可行的,主要注意点 Intent voiceIntent = new Intent(); voic...
  • jianguo_liao19840726
  • jianguo_liao19840726
  • 2011年11月24日 23:21
  • 923

Android -- 跨应用绑定service并通信

之前记录过跨应用绑定service:http://blog.csdn.net/gaopeng0071/article/details/46049929,那么绑定后如何进行通信呢,下面我们就来学习下。第...
  • u010926176
  • u010926176
  • 2015年05月28日 17:46
  • 1589

Service使用——不同应用程序间的绑定与信息传递

Service是android四大组件之一,通常很多后台的工作会交给Service,如音乐的播放什么的,这里不介绍Service的生命周期什么的,主要介绍如何绑定Service并进行信息传递。 一...
  • u013524014
  • u013524014
  • 2015年12月15日 15:29
  • 631

安卓跨应用调用Activity,Service并进行通信,AIDL的应用

刚开始学习安卓的时候学过怎么跨应用启动activity和servicer,但只是会启动而已,对于他们之间的通信并没有做更深入的了解。偶尔接触到一个名词叫AIDL,在网上查阅资料的时候发现他的全称为an...
  • hitsyd2015
  • hitsyd2015
  • 2015年10月21日 11:21
  • 1035

Android 跨应用调用Activity及Service

如何调用另外一个app应用的activity或者service,本文提供一个验证可行的方法。 调用方法: Intent intent=new Intent("youActionName")...
  • fengye810130
  • fengye810130
  • 2013年07月30日 16:01
  • 6982

如何实现跨应用绑定Service的通信

在上一篇博文点击打开链接的基础上,我们继续实现通过AIDL绑定外部Service后的通信问题. 需要实现的效果是,在另一个应用的App2Activity2中的EditText中动态的输入内容,然后点击...
  • mChenys
  • mChenys
  • 2015年11月02日 01:42
  • 1150

Android中的Service及其应用

http://express.ruanko.com/ruanko-express_22/webpage/tech-overnight_1.html Android中的Service,其意思是“服务”,...
  • cynhafa
  • cynhafa
  • 2011年03月17日 14:31
  • 4070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Service的应用思路
举报原因:
原因补充:

(最多只允许输入30个字)