BindService总结
来源:互联网 发布:管理信息系统uc矩阵 编辑:程序博客网 时间:2024/04/28 21:34
一、整体工程图
二、activity_bind.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"><Button android:text="useService" android:id="@+id/buttonUseService" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button></LinearLayout>
三、BindActivity.java
package com.jltxgcy.bindservice;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.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;import com.jltxgcy.bindservice.LocalService.LocalBinder;public class BindActivity extends Activity {LocalService mService; boolean mBound = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bind); findViewById(R.id.buttonUseService).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (mBound) { // Call a method from the LocalService. // However, if this call were something that might hang, then this request should // occur in a separate thread to avoid slowing down the activity performance. int num = mService.getRandomNumber(); Toast.makeText(BindActivity.this, "number: " + num, Toast.LENGTH_SHORT).show(); }}}); } @Override protected void onStart() { super.onStart(); // Bind to LocalService Intent intent = new Intent(this, LocalService.class); bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } @Override protected void onStop() { super.onStop(); // Unbind from the service if (mBound) { unbindService(mConnection); mBound = false; } } /** Defines callbacks for service binding, passed to bindService() */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // We've bound to LocalService, cast the IBinder and get LocalService instance LocalBinder binder = (LocalBinder) service; mService = binder.getService(); mBound = true; Log.d("jltxgcy", "onServiceConnected"); } //Called when the connection with the service disconnects unexpectedly @Override public void onServiceDisconnected(ComponentName arg0) { mBound = false; Log.d("jltxgcy", "onServiceDisconnected"); } };}
四、LocalService.java
package com.jltxgcy.bindservice;import java.util.Random;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.util.Log;public class LocalService extends Service {public static final String TAG="jltxgcy"; // Binder given to clients private final IBinder mBinder = new LocalBinder(); // Random number generator private final Random mGenerator = new Random(); @Overridepublic void onCreate() { Log.d(TAG, "onCreate");super.onCreate();} /** * Class used for the client Binder. Because we know this service always * runs in the same process as its clients, we don't need to deal with IPC. */ public class LocalBinder extends Binder { LocalService getService() { // Return this instance of LocalService so clients can call public methods return LocalService.this; } } @Override public IBinder onBind(Intent intent) { Log.d(TAG, "onBind"); return mBinder; } /** method for clients */ public int getRandomNumber() { return mGenerator.nextInt(100); }@Overridepublic boolean onUnbind(Intent intent) {Log.d(TAG, "onUnbind");return super.onUnbind(intent);}@Overridepublic void onDestroy() {Log.d(TAG, "onDestroy");}}
五、详解
程序开始,绑定Service,结果显示如下:
说明了调用的先后顺序。onBind方法得到了IBinder对象,onServiceConnected方法将IBinder对象向下转型为LocalBinder对象,通过调用getService取得Service实例, 这样就可以在BindActivity中使用Service的方法。
按Back键退出,调用
代码地址:https://github.com/jltxgcy/Demo
- BindService总结
- startService, bindService区别和总结
- bindService
- BindService
- BindService
- BindService
- BindService
- BindService
- bindService
- BindService
- BindService()
- Android Service的总结,service, bindservice,intentservice
- Andorid之BINDSERVICE的使用方法总结
- 混合使用startService,bindService,以及tartForegroud方法使用总结
- 混合使用startService,bindService,以及tartForegroud方法使用总结
- 混合使用startService,bindService,以及tartForegroud方法使用总结
- android Service(startService bindService)详解以及全面总结
- 理解BindService
- Linux常用指令
- 那年,一步一步学linux c ---让系统更安全之锁定内存~~~
- ServletContext类简介
- eval解析JSON中的注意点
- 取消Server2008的IE增强的安全配置
- BindService总结
- spring整合memcached注意事项-poolname
- 从远程Oracle服务器上同步复制数据到本地备份库
- 指针!!
- How Magento cache Blocks HTML output
- C++中cin函数深入分析
- WebKit中CSS处理流程
- Linux 小实验之我的局域网聊天室
- 为什么鲍尔默现在说要辞职?