zoukankan      html  css  js  c++  java
  • android89 服务service

    #服务
    服务不能new,new出来的只是一个普通java对象不是服务,只能够通过Intent和startService(intent)创建服务。
    ###开启方式
    * startService,onCreate-onStartCommand-onDestroy没有与绑定相关的方法。
        * 该方法启动的服务所在的进程属于服务进程,
        * Activity一旦启动服务,服务就跟Activity一毛钱关系也没有了,只不过运行在同一个进程而已。
    * bindService,onCreate-onBind-onUnbind-onDestroy。
        *绑定后再绑定不会执行任何操作,解绑后再解绑会出异常。
        * 该方法启动的服务所在进程不属于服务进程
        * Activity与服务建立连接,Activity一旦死亡,服务也会死亡
    package com.itheima.runservice;
    
    import android.os.Bundle;
    import android.os.IBinder;
    import android.app.Activity;
    import android.app.Service;
    import android.content.ComponentName;
    import android.content.Intent;
    import android.content.ServiceConnection;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        private Intent intent;
        private MyServiceConn conn;
    
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            intent = new Intent(this, MyService.class);
            conn = new MyServiceConn();
        }
    
    
        public void start(View v){
            startService(intent);
        }
        
        public void stop(View v){
            stopService(intent);
        }
        
        public void bind(View v){
            //绑定服务
            bindService(intent, conn, BIND_AUTO_CREATE);
        }
        
        public void unbind(View v){
            //解绑服务
            unbindService(conn);
        }
        
        class MyServiceConn implements ServiceConnection{
            //服务连接成功时,此方法调用
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
            }
    
            //服务失去连接时,此方法调用
            @Override
            public void onServiceDisconnected(ComponentName name) {
            }
        }
    }
    //清单文件<service android:name="com.itheima.runservice.MyService"></service>
    package com.itheima.runservice;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    
    public class MyService extends Service {
    
        //绑定时调用
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            System.out.println("bind方法");
            return null;//返回Activity和MyService的中间人对象
        }
    
        //解绑时调用
        @Override
        public boolean onUnbind(Intent intent) {
            // TODO Auto-generated method stub
            System.out.println("unbind方法");
            return super.onUnbind(intent);
        }
        
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            System.out.println("create方法");
        }
        
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
            System.out.println("start方法");
            return super.onStartCommand(intent, flags, startId);
        }
        
        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
            System.out.println("destroy方法");
            super.onDestroy();
        }
        
    }
  • 相关阅读:
    AutoCompleteTextView控件的使用
    menu菜单
    fragment之间的通信
    fragment的生命周期
    用模型取代字典的好处
    使用fragment兼容低版本的写法
    模拟微信主界面
    动态替换fragment
    fragment入门
    Spring MVC学习总结(1)——Spring MVC单元测试
  • 原文地址:https://www.cnblogs.com/yaowen/p/4951686.html
Copyright © 2011-2022 走看看