import android.os.IBinder; //导入方法依赖的package包/类

/**

* 获取已注册服务的IBinder对象,前提是该服务是静态服务,即默认一直存在,或者自己已经启动并且向我们注册过;

* 注意不能通过此借口获取一个插件的服务,除非明确知道该插件的服务已经主动注册过,否则使用getPluginService()

*

* @param context

* @param serviceName 请求获取的service名称

* @return 所请求的service实现对象

*/

public static IBinder getService(Context context, String serviceName) {

if (DEBUG) {

Log.d(TAG, "[getService] begin = " + SystemClock.elapsedRealtime());

}

IBinder service = null;

/**

* 先考虑本地缓存

*/

SoftReference ref = sCache.get(serviceName);

if (ref != null) {

service = ref.get();

if (service != null) {

if (service.isBinderAlive() && service.pingBinder()) {

if (DEBUG) {

Log.d(TAG, "[getService] Found service from cache: " + serviceName);

Log.d(TAG, "[getService] end = " + SystemClock.elapsedRealtime());

}

return service;

} else {

sCache.remove(serviceName);

}

}

}

IServiceChannel serviceChannel = getServerChannel(context);

if (serviceChannel == null) {

return null;

}

try {

service = serviceChannel.getService(serviceName);

if (service != null) {

if (DEBUG) {

Log.d(TAG, "[getService] Found service from remote service channel: " + serviceName);

}

service = ServiceWrapper.factory(context, serviceName, service);

sCache.put(serviceName, new SoftReference(service));

}

} catch (RemoteException e) {

if (DEBUG) {

Log.e(TAG, "[getService] Error when getting service from service channel...", e);

}

}

if (DEBUG) {

Log.d(TAG, "[getService] end = " + SystemClock.elapsedRealtime());

}

return service;

}

android java ibinder_Java IBinder.pingBinder方法代码示例相关推荐

  1. android java ibinder_Java IBinder.isBinderAlive方法代码示例

    import android.os.IBinder; //导入方法依赖的package包/类 /** * 获取已注册服务的IBinder对象,前提是该服务是静态服务,即默认一直存在,或者自己已经启动并 ...

  2. java kryo_Kryo框架使用方法代码示例

    Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo ...

  3. java readtimeout_Java HttpURLConnection.getReadTimeout方法代码示例

    import java.net.HttpURLConnection; //导入方法依赖的package包/类 /** * 得到响应对象 * * @param urlConnection * @retu ...

  4. java invalidate_Java Component.invalidate方法代码示例

    import java.awt.Component; //导入方法依赖的package包/类 /** Installs the component we will embed to display t ...

  5. java hasmoreelements_Java IOException.hasMoreElements方法代码示例

    import java.io.IOException; //导入方法依赖的package包/类 /** * fileName���� ���� package �������� ������ ���� ...

  6. java methode_Java Method.getTypeParameters方法代码示例

    import java.lang.reflect.Method; //导入方法依赖的package包/类 private void validateRuleMethod(MethodRuleDefin ...

  7. java textlistener_Java TextView.setOnEditorActionListener方法代码示例

    import android.widget.TextView; //导入方法依赖的package包/类 @Override public void onCreate(Bundle savedInsta ...

  8. java setmethod_Java Operation.setJavaMethod方法代码示例

    import com.sun.tools.internal.ws.processor.model.Operation; //导入方法依赖的package包/类 private void createJ ...

  9. java resume_Java JPushInterface.resumePush方法代码示例

    import cn.jpush.android.api.JPushInterface; //导入方法依赖的package包/类 private void saveToSP(User user) { S ...

最新文章

  1. 【Eclipse 插件】JD-Eclipse
  2. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...
  3. maven 无效的源发行版11
  4. Javascript设计模式之发布-订阅模式
  5. salt-api安装与配置
  6. python发展至今有哪些版本_Python发展至今有哪些版本,各版本有什么区别?
  7. 一款在线画图工具的使用(推荐)
  8. 无线扩音器FCC认证CE认证需要满足那些要求
  9. PageOffice国产版的授权及离线注册
  10. MATLAB-数字图像处理 量化
  11. 秒杀(小米网抢购系统开发实践--“米粉节”背后的故事)
  12. Office文档在线编辑和预览服务搭建
  13. ZEGO 2018上海音视频技术嘉年华 活动回顾PPT下载
  14. Java计算机毕业设计电影公司网源码+系统+数据库+lw文档
  15. Androidnbsp;LinearLayout与Relat…
  16. DIAView高级视频教程
  17. 一个有意思的分钱模拟问题
  18. 翻煎饼 swustoj 254
  19. 不会找对象?教你两招再试试【适用于Java攻城狮】
  20. Java网络斗地主小程序

热门文章

  1. 电子计算机的基本结构基于存储程序思想是由,第一章计算机基础知识习题
  2. 【Leetcode】249. Group Shifted Strings
  3. JavaScript实现二级联动(省市、楼栋)
  4. marktest的下载,汉化版下载以及插件推荐
  5. 基于Python实现对情感极性判断分析实验
  6. 模板类的动态模板特化
  7. IT职业教育(1) 北大青鸟APTECH
  8. css a hover禁止,我可以通过JavaScript禁用CSS:hover效果吗?
  9. 计算机辅助药物设计 fda,Computer Aided Drug Design 上海交通大学生物 (计算机辅助药物设计上海交通大学生物).pdf...
  10. 仅用一个微处理器管脚驱动两个低静态电流的LED