应用内绑定服务例子
来源:互联网 发布:多益网络用户中心 编辑:程序博客网 时间:2024/06/03 20:18
绑定服务场景:应用内其他地方需要调用服务中的方法。
例子1,Binder中的所有方法都可以被调用:
public class BindService extends Service { @Override public IBinder onBind(Intent intent) { return new ServiceBinder(); } public class ServiceBinder extends Binder { public void callServiceMethod() { sayHello(); } } public void sayHello() { System.out.println("Hello bindService!"); }}服务要在manifest中注册。
调用:
public class MainActivity extends Activity { private ServiceBinder mService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bind(); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mService != null) { mService.callServiceMethod(); } } }); } @Override protected void onDestroy() { super.onDestroy(); unBind(); } private void bind() { Intent service = new Intent(this, BindService.class); bindService(service, mConnection, Context.BIND_AUTO_CREATE); } private void unBind() { if (mConnection != null) { unbindService(mConnection); } mService = null; } ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { System.out.println("进程挂了或服务被异常杀死时调用"); } @Override public void onServiceConnected(ComponentName name, IBinder service) { mService = (ServiceBinder) service; System.out.println("綁定成功"); } };}
例子2,binder中有自己的私有方法不想被外部调用,则需要添加接口,把外部可以访问的方法写到接口中。
public interface IServiceBinder { public void callServiceMethod();}
服务:
public class BindService extends Service { @Override public IBinder onBind(Intent intent) { return new ServiceBinder(); } public class ServiceBinder extends Binder implements IServiceBinder { @Override public void callServiceMethod() { sayHello(); } // 不想被外部调用的方法 private void sayGoodBye() { System.out.println("bye bye BindService!"); } } public void sayHello() { System.out.println("Hello BindService!"); }}
调用:
public class MainActivity extends Activity { private IServiceBinder mService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bind(); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mService != null) { mService.callServiceMethod(); } } }); } private void bind() { Intent service = new Intent(this, BindService.class); bindService(service, mConn, Context.BIND_AUTO_CREATE); } private void unBind() { if (mConn != null) { unbindService(mConn); } mService = null; } protected void onDestroy() { super.onDestroy(); unBind(); }; ServiceConnection mConn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { mService = (IServiceBinder) service; } };}
0 0
- 应用内绑定服务例子
- 11 绑定服务 本应用程序内
- laravel5.3 绑定服务容器例子
- iOS应用内HTTP服务上传文件
- jetty快速构建应用内服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务&绑定远程服务
- 安卓:绑定服务的一个小应用
- Android Bound Service(一) ----- Extending Binder Service(进程内绑定Service的简单例子)
- Android应用中创建绑定服务使得用户可以与服务交互
- 服务的创建,绑定以及调用服务中的方法(以应用锁为例)
- DataGrid内绑定DropDownList
- 内嵌绑定DataList
- PHP 魔术变量
- servJump extends HttpServlet //request.getRequestDispatcher //response.sendRedirect("http
- :link,:visited,:focus,:hover,:active详解
- win10在几个窗口间切换的快捷键
- Kendo UI常用示例汇总(二)
- 应用内绑定服务例子
- Rescue the Rabbit HDU4057
- find xargs 检查php语法错误
- 在collectionView中返回两个不同的cell
- php quickSort_快速排序
- IOS 中控件相对坐标
- Android LayoutInflater源码分析及使用(一)
- Spring源码解析之初始化
- 例题9-5 UVA 12563 Jin Ge Jin Qu [h]ao (01 背包)