Java乔晓松-android的四大组件之一Service(服务的绑定)
16lz
2021-01-23
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>
更多相关文章
- android 组件,xml布局中属性详解
- Android中widget组件的开发流程
- Android 四大组件 —— 活动(使用Intent 实现活动的显示跳转)
- 解开Android应用程序组件Activity的"singleTask"之谜(2)
- 简单的Android UI组件使用