zoukankan      html  css  js  c++  java
  • Android 之Service的使用及生命周期

    关于Android中的Service的使用,首先要明白Service的生命周期,开发Service的步骤与Activity的步骤很像,开发Service组件需要先开发一个Service的子类,然后在AndroidManifest.xml中配置该Service。

    首先,先来说一下Service的生命周期:

    正如Activity一样,Service也有自己的一套生命周期函数,在Android中,运行Service有两种方法:

    (1) 通过Context的startService()方法:通过该方法启动Service,那么即使访问者退出了,Service仍然在运行着,因为访问者与Service之间没有关联;

    (2) 通过Context的bindService()方法:通过该方法启动Service,访问者与Service绑定在一起,访问者一旦退出了,Service也就终止。

      service整体的生命时间是从onCreate()被调用开始,到onDestroy()方法返回为止。

      和activity一样,service在onCreate()中进行它的初始化工作,在onDestroy()中释放残留的资源。

      那么如何来使用第二种运行方式来运行一个Service呢?

      每一个被创建好的Service都潜在的允许绑定,所以一个被开启的Service仍然可能被绑定的,

      调用被绑定的service是当其他组件(一个客户)调用bindService()来创建的,客户可以通过一个IBinder()接口和service进行通信。

      客户可以通过 unbindService()方法来关闭这种连接,一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。

      

      通过下边的这张图洗完可以更好的帮助理解一下Service的周期。

      

      下边的类定义了一个Service组件,虽然这个Service什么事情也没干,但实际是那个它是Service组件的框架,如果希望Service做某些事情,那么只要在onCreate()或onStartCommand()方法中定义响应的恶业务代码即可。

    public class MyFirstService extends Service {
        private String  Tag = "MyFirstService";
        
        @Override
        public IBinder onBind(Intent arg0) {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
             Log.v(Tag, "Service is Created");  
            super.onCreate();
        }
        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
              Log.v(Tag, "Service is Destroy");  
            super.onDestroy();
        }
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
             Log.v(Tag, "Service is Started");  
            return super.onStartCommand(intent, flags, startId);
        }
        @Override
        public boolean onUnbind(Intent intent) {
            // TODO Auto-generated method stub
            Log.v(Tag, "start onUnbind~~~");  
            return super.onUnbind(intent);
        }
        
       
    }

    定义了上边的Service之后,需要在AndroidManifest.xml中被指该Service:

      <service android:name="com.example.service.MyFirstService" />
    
  • 相关阅读:
    TOMCAT清理
    tomcat 热部署、热加载 精析
    TOMCAT配置数据库连接池
    TOMCAT修改端口号
    TOMCAT配置管理员
    Go语言net/http 解读.
    《coredump问题原理探究》Linux x86版7.7节 set对象
    Asp.net与office web apps的整合
    【设计模式】代理模式实现连接池
    手把手实现Java权限(1)-Shiro介绍
  • 原文地址:https://www.cnblogs.com/mengyan1124/p/4503766.html
Copyright © 2011-2022 走看看