zoukankan      html  css  js  c++  java
  • Java乔晓松-android的四大组件之一Service(服务的绑定)

    android的四大组件之一Service(服务的绑定)

     

    怎么绑定服务,又怎么解除服务,代码如下:

    MainActivity.java源码:

    package com.example.lesson14_binder;
    
    import android.app.Activity;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.ServiceConnection;
    import android.os.Bundle;
    import android.os.IBinder;
    import android.view.View;
    
    /**
     * 2013-6-18 下午2:22:00
     * 
     * @author 乔晓松
     */
    public class MainActivity extends Activity {
    
    	public MyService myService;
    	// 内部类获取连接对象
    	public ServiceConnection conn = new ServiceConnection() {
    
    		// 连接失败后调用的方法
    		@Override
    		public void onServiceDisconnected(ComponentName name) {
    			myService = null;
    			System.out.println("-----service Faild");
    		}
    
    		// 连接成功后调用的方法
    		@Override
    		public void onServiceConnected(ComponentName name, IBinder service) {
    			myService = ((MyService.MyBinder) service).getService();
    			System.out.println("-----service connection");
    		}
    	};
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    
    	// 绑定服务
    	public void bindService(View v) {
    
    		Intent serviceIntent = new Intent(this, MyService.class);
    		this.bindService(serviceIntent, conn, Context.BIND_AUTO_CREATE);
    
    		System.out.println("---------bindService");
    	}
    
    	// 解除绑定
    	public void unBindService(View v) {
    		this.unbindService(conn);
    		System.out.println("---------unBindService");
    	}
    
    }
    


    MyService.java源码:

    package com.example.lesson14_binder;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.Binder;
    import android.os.IBinder;
    
    /**
     * 2013-6-18 下午2:16:37
     * 
     * @author 乔晓松
     */
    public class MyService extends Service {
    
    	public MyBinder myBinder = new MyBinder();
    
    	// 绑定的时候执行
    	@Override
    	public IBinder onBind(Intent intent) {
    		System.out.println("------onBind");
    		return myBinder;
    	}
    
    	// 重新绑定的时候执行
    	@Override
    	public void onRebind(Intent intent) {
    		super.onRebind(intent);
    		System.out.println("------onRebind");
    	}
    
    	// 解除绑定的时候执行
    	@Override
    	public boolean onUnbind(Intent intent) {
    		System.out.println("------onUnbind");
    		return super.onUnbind(intent);
    	}
    
    	// 创建服务的时候执行
    	@Override
    	public void onCreate() {
    		super.onCreate();
    		System.out.println("------onCreate");
    	}
    
    	// 开启服务的时候执行
    	@Override
    	public int onStartCommand(Intent intent, int flags, int startId) {
    		System.out.println("------onStartCommand");
    		return super.onStartCommand(intent, flags, startId);
    	}
    
    	// 销毁服务的时候执行
    	@Override
    	public void onDestroy() {
    		super.onDestroy();
    		System.out.println("------onDestroy");
    	}
    
    	// 继承绑定类的内部类
    	public class MyBinder extends Binder {
    		public MyService getService() {
    			return MyService.this;
    		}
    	}
    }
    


     

    布局文件的代码:

    <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"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/btn_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="59dp"
            android:onClick="bindService"
            android:text="@string/btn_start" />
    
        <Button
            android:id="@+id/btn_end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/btn_start"
            android:layout_alignRight="@+id/btn_start"
            android:layout_below="@+id/btn_start"
            android:layout_marginTop="58dp"
            android:onClick="unBindService"
            android:text="@string/btn_end" />
    
    </RelativeLayout>
    


     

  • 相关阅读:
    读本地json的方法
    告诉你如何应对HR索要薪资证明!
    函数声明与函数表达式
    原型的动态性
    工作实际需求andjs进阶图书
    表单元素操作,button,点击下载按钮实现-长知识
    grunt注意要点
    重新认识块级元素--DIV
    GO语言学习:变量间赋值
    GO语言学习:单通道
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3172204.html
Copyright © 2011-2022 走看看