zoukankan      html  css  js  c++  java
  • Android 之Service

      service是运行在后台的服务,你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。

    接下来分析一下service 的生命周期:

    1:actiivty_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button 
            android:id="@+id/btn_bind_service"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Bind Service"/>
        
        <Button 
            android:id="@+id/btn_stop_bind"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn_bind_service"
            android:text="Stop Bind"/>
        
        <Button 
            android:id="@+id/btn_start_service"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn_stop_bind"
            android:text="Start Service"/>
        
        <Button 
            android:id="@+id/btn_stop_service"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/btn_start_service"
            android:text="Stop Service"/>
    </RelativeLayout>

    2:ServiceDemo.java

    public class ServiceDemo extends Service{
        private static final String TAG="ServiceDemo";
        public static final String ACTION="com.yan.service.ServiceDemo";
        
        @Override
        public IBinder onBind(Intent arg0) {
            Log.i(TAG, "onBind");
            return null;
        }
    
        @Override
        public void onCreate() {
            Log.i(TAG,"onCreate");
            super.onCreate();
        }
    
        @Override
        @Deprecated
        public void onStart(Intent intent, int startId) {
            Log.i(TAG, "onStart");
            super.onStart(intent, startId);
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.i(TAG, "onStartCommand");
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onDestroy() {
            Log.i(TAG, "onDestroy");
            super.onDestroy();
        }
    
        @Override
        public boolean onUnbind(Intent intent) {
            Log.i(TAG, "onUnbind");
            return super.onUnbind(intent);
        }
    }

    3:MainActivity.java

    public class MainActivity extends Activity {
        private Button btnBindService=null;
        private Button btnStopBind=null;
        private Button btnStartService=null;
        private Button btnStopService=null;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            btnBindService=(Button)findViewById(R.id.btn_bind_service);
            btnStopBind=(Button)findViewById(R.id.btn_stop_bind);
            btnStartService=(Button)findViewById(R.id.btn_start_service);
            btnStopService=(Button)findViewById(R.id.btn_stop_service);
            
            btnBindService.setOnClickListener(new OnClickListener(){
                public void onClick(View view){
                    Intent intent=new Intent(ServiceDemo.ACTION);
                    bindService(intent,sc,BIND_AUTO_CREATE);
                }
            });
            
            btnStopBind.setOnClickListener(new OnClickListener(){
                public void onClick(View view){
                    unbindService(sc);
                }
            });
            
            btnStartService.setOnClickListener(new OnClickListener(){
                public void onClick(View view){
                    Intent intent=new Intent(ServiceDemo.ACTION);
                    startService(intent);
                }
            });
            
            
            btnStopService.setOnClickListener(new OnClickListener(){
                public void onClick(View view){
                    Intent intent=new Intent(ServiceDemo.ACTION);
                    stopService(intent);
                }
            });
        }
    
        ServiceConnection sc=new ServiceConnection(){
            @Override
            public void onServiceConnected(ComponentName arg0, IBinder arg1) {
                Log.i("SC", "onServiceConnected");
            }
            @Override
            public void onServiceDisconnected(ComponentName arg0) {
                Log.i("SC", "onServiceDisconnected");
            }
        };
    }

    4:AndroidManifest.xml

    <service 
                android:name="com.yan.service.ServiceDemo">
                <intent-filter>
                    <action android:name="com.yan.service.ServiceDemo"/>
                </intent-filter>
            </service>

    5:运行结果分析。

    (1)点击StartService:

    执行 onCreate()->onStartCommand()->onStart()

    (2)点击StopService:

    执行 onDestroy()

    (3)点击BindService

    执行 onCreate()->onBind()

    (4)点击StopBind

    执行 onUnbind()->onDestory()

  • 相关阅读:
    spring boot activiti 整合
    接管SpringBoot对Activiti的数据源自动配置
    springboot集成activiti6.0多数据源的配置
    activiti 如何使用database前缀来区分activiti数据库和业务数据库
    SpringBoot开发案例之整合Activiti工作流引擎
    Activiti6简明教程
    springboot activiti 配置项详解
    Activiti搭建
    spring boot 2.0 报错:“jdbcUrl is required with driverClassName.” 解决办法!
    TCP的可靠传输机制(简单好理解:分段与流,滑窗,连接,流量控制,重新发送,堵塞控制)
  • 原文地址:https://www.cnblogs.com/yshyee/p/3364583.html
Copyright © 2011-2022 走看看