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.isBinderAlive方法代码示例相关推荐

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

    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. [THUWC2017]随机二分图
  2. 又要头秃?2020年七大AI编程语言大盘点
  3. VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序
  4. Android-Spinner的使用以及两种适配器
  5. 发送结构化的网络消息
  6. Java 什么叫做实例化
  7. 实录分享 | 计算未来轻沙龙:对话系统研究进展(视频 + PPT)
  8. 在数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数
  9. crc32库 qt_Qt 打包32位库(包括WebEngineView)
  10. android 记一次解决键盘遮挡问题
  11. 在VS2010中使用Git【图文】转
  12. LeetCode —— 链表相关(206、141)
  13. Linux glib命令行解析GOptionEntry使用
  14. pktgen-dpdk 使用笔记
  15. 深入学习软件测试:混合正交表工具
  16. Chrome扩展 - 百度识图
  17. 如何删除SceneDelegate
  18. 计算机在运行表格的时候很慢,win7系统打开excel2007表格很慢的解决方法
  19. 快递系统java实验报告_快递管理毕业论文-基于java的物流快递管理系统设计
  20. 漫画 | 程序员大战公务员!到底谁猛?

热门文章

  1. 测试小故事91:讲故事
  2. LeetCode—Candy(分糖果)—java
  3. 201571030334 小学四则运算练习软件项目报告
  4. 南昌大学计算机与科学专业就业前景,南昌大学好就业吗?附南昌大学就业率最高的专业名单...
  5. 软考中级(软件设计师)——计算机网络(5分)与信息安全(3分)
  6. php 用什么流程图制作,分享一款简单流程图制作软件,教你快速绘制流程图
  7. Java多线程【状态与安全问题】
  8. 【MATLAB】详解 M 文件与 M 函数
  9. 盘点一款手机Python编程神器——AidLearning(免费分享)
  10. ZZNUOJ_C语言1001 : 植树问题(完整代码)