当前位置: 首页 > news >正文

宁波免费做网站wordpress 获取所有菜单

宁波免费做网站,wordpress 获取所有菜单,襄阳建设网站,投资公司企业文化因为工作中经常需要解决一些framework层的问题,而framework层功能一般都是system service 的代理stub,然后封装相关接口,并提供给APP层使用,system service则在不同的进程中运行,这样实现了分层,隔离&#…

        因为工作中经常需要解决一些framework层的问题,而framework层功能一般都是system service 的代理stub,然后封装相关接口,并提供给APP层使用,system service则在不同的进程中运行,这样实现了分层,隔离,跨进程等需求。

        下面以Vibrator为例,总结一下实现流程

  1. 定义一个抽象类Vibrator定义了应用中可以访问的一些抽象方法
    frameworks/base/core/java/android/os/Vibrator.java
  2. 定义具体的类SystemVibrator继承Vibrator实现抽象方法
    frameworks/base/core/java/android/os/SystemVibrator.java
  3. 定义一个AIDL接口文件IVibratorService.aidl定义系统服务接口
    frameworks/base/core/java/android/os/IVibratorService.aidl
  4. 定义服务VibratorService,实现IVibratorService定义的接口
    frameworks/base/services/java/com/android/server/VibratorService.java

public class VibratorService extends IVibratorService.Stub

5.将VibratorServicey添加到系统服务
frameworks/base/services/java/com/android/server/SystemServer.java

VibratorService vibrator = null; 

... 

//实例化VibratorService并添加到ServiceManager 

Slog.i(TAG, "Vibrator Service"); 

vibrator = new VibratorService(context);

ServiceManager.addService("vibrator", vibrator);

... 

//通知服务系统启动完成 

try { 

vibrator.systemReady();

 } catch (Throwable e) { 

reportWtf("making Vibrator Service ready", e); 

}

6.在SystemVibrator中通过IVibratorService的代理连接到VibratorService,这样SystemVibrator的接口实现里就可以调用IVibratorService的接口:
frameworks/base/core/java/android/os/SystemVibrator.java

private final IVibratorService mService;

 ...

public SystemVibrator() {

 ...

mService = IVibratorService.Stub.asInterface( ServiceManager.getService("vibrator"));

 ...

public boolean hasVibrator() {

 ...

try {

return mService.hasVibrator();

} catch (RemoteException e) { }

 ...

}

}

7.在Context里定义一个代表Vibrator服务的字符串
frameworks/base/core/java/android/content/Context.java

public static final String VIBRATOR_SERVICE = "vibrator";

8.注册SystemVibrator,在ContextImpl里添加SystemVibrator的实例化过程static方法中注册 registerService
frameworks/base/core/java/android/app/ContextImpl.java

registerService(VIBRATOR_SERVICE, new ServiceFetcher() {

public Object createService(ContextImpl ctx) {

 return new SystemVibrator(ctx);

}});

9.在应用中使用Vibrator的接口

Vibrator mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); mVibrator.vibrate(500);

10.为保证编译正常,还需要将AIDL文件添加到编译配置里
frameworks/base/Android.mk

LOCAL_SRC_FILES += \

...

core/java/android/os/IVibratorService.aidl \

上面的流程在location service和Bluetooth service等流程基本一致,也可以参照上面流程,实现自定义的系统服务,比如车机开发中经常面临这样的需求。

http://www.yayakq.cn/news/786582/

相关文章:

  • 开展农业信息网站建设工作总结wordpress wp-config
  • dede网站地图 调用文章深圳广告网站设计制作
  • 网站推广方法大全建立起以什么会晤机制为引领
  • 公司要建立网站要怎么做网站建设与设计主要是干什么的
  • 做网站乱码网站备案文件下载
  • 山东网站推广公司在线制作二维码名片
  • 网站怎么做端口映射深圳著名设计网站
  • 常德网站建设设计旧房翻新装修一般多少钱
  • 广州番禺营销型网站温州百度seo
  • 可以用wpf做网站吗网页设计需要什么书
  • 自己建设个人网站要花费多少网站建设案例百度云
  • 网站响应式布局简单网页源代码
  • 网站维护推广龙岩网站设计找哪家公司
  • 免费主页空间申请网站织梦网站被做跳转
  • 南宁网站建设公司电话共享影院 wordpress
  • 学校网站建设过程广州网站建设推广专家团队
  • 做电商网站都需要学什么花西子网络营销策划方案
  • 用手机建立自己的网站wordpress怎么设计
  • 网站建设全视频教程下载网站建设在线商城
  • 公司网站开通晓风彩票门户网站建设
  • 小程序网站制作公司wordpress无法设置主页
  • 浅谈国内高校英文网站的建设现状c2c商业模式有哪些
  • wordpress 一站多主题remix做歌网站
  • php网站开发if的代码蚌埠做网站公司
  • 烟台网站排名优化报价wordpress不能发文章
  • 上海网站制作公司报价企业网站设计期末考试
  • seo网站优化外包商丘网络营销公司
  • 网站开发服务器网页价格是什么意思
  • 网站浏览记录怎么做常州网页设计制作
  • 做团购的网站有哪些wordpress调用置顶文章