Java乔晓松-android的四大组件之一Service(服务的绑定)
16lz
2021-12-04
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() {// 连接失败后调用的方法@Overridepublic void onServiceDisconnected(ComponentName name) {myService = null;System.out.println("-----service Faild");}// 连接成功后调用的方法@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {myService = ((MyService.MyBinder) service).getService();System.out.println("-----service connection");}};@Overrideprotected 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();// 绑定的时候执行@Overridepublic IBinder onBind(Intent intent) {System.out.println("------onBind");return myBinder;}// 重新绑定的时候执行@Overridepublic void onRebind(Intent intent) {super.onRebind(intent);System.out.println("------onRebind");}// 解除绑定的时候执行@Overridepublic boolean onUnbind(Intent intent) {System.out.println("------onUnbind");return super.onUnbind(intent);}// 创建服务的时候执行@Overridepublic void onCreate() {super.onCreate();System.out.println("------onCreate");}// 开启服务的时候执行@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {System.out.println("------onStartCommand");return super.onStartCommand(intent, flags, startId);}// 销毁服务的时候执行@Overridepublic 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>
更多相关文章
- Mac adb 配置
- linux 下使用ndk-build编译android使用的c++静态库
- Android(安卓)- 多线程 - AsyncTask
- Android使用service后台更新计划任务
- Android异步任务AsyncTask
- Android—Service详解—模拟点击抽奖(2020.7.3)
- Android中startService的使用及Service生命周期
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android——横竖屏切换以及数据保存