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

河南住房建设厅网站腾讯云如何注册域名

河南住房建设厅网站,腾讯云如何注册域名,wordpress 搭建论坛,腾讯企业邮箱容量目录 5、 谁来写Proxy及Stub类呢? 如何考虑人的分工 IA接口知识取得的难题 在编程上#xff0c;有什么技术可以实现这个方法#xff1f; 范例 5、 谁来写Proxy及Stub类呢? -- 强龙提供AIDL工具#xff0c;给地头蛇产出Proxy和Stub类 如何考虑人的分工 由框架开发者…目录 5、 谁来写Proxy及Stub类呢? 如何考虑人的分工 IA接口知识取得的难题 在编程上有什么技术可以实现这个方法 范例 5、 谁来写Proxy及Stub类呢? -- 强龙提供AIDL工具给地头蛇产出Proxy和Stub类 如何考虑人的分工 由框架开发者来撰写Proxy-Stub类才能减轻开发者的负担。框架分为 天子框架和曹操框架。因此 应该由两者(天子或曹操)之一来撰写Proxy-Stub类。   IA接口知识取得的难题 但是有个难题 IA接口(如下图所示)的内容必须等到买主来了才会知道。在框架开发阶段买主还没来 IA接口的知识无法取得又如何定义IA接口呢? 没有IA接口定义又如何撰写Stub和Proxy类呢? 好办法是 “强龙(天子或曹操)撰写代码(在先) 然后地头蛇(App开发者)定义接口(在后)。 ” 在编程上有什么技术可以实现这个方法 技术之一是 類別模板(class template)例如强龙撰写模板   template class T class SomeClass {private:T data;public:SomeClass() { }void set(T da){ data da; } }; 地头蛇利用模板来生成一个类 SomeClassInteger x; 由于接口(interface)是一种特殊的类(class)所以也可以定义模板如下   templateinterface Iclass BinderProxy{// ………}; 地头蛇利用模板来生成一个类除了模板之外还有其它编程技术可以实现强龙写代码地头蛇定义接口的方案吗?答案是    程序生成器(program generator)    例如 Android的aidl.exe AIDL AIDL的目的是定义Proxy/Stub来封装IBinder接口以便产生更亲切贴心的新接口。•所以在应用程序里可以选择使用IBinder接口也可以使用AIDL来定义出接口。AIDL的目的是定义Proxy/Stub来封装IBinder接口以便产生更亲切贴心的新接口。所以在应用程序里可以选择使用IBinder接口也可以使用AIDL来定义出新接口。由于IBinder接口只提供单一函数(即transact()函数)来进行远距通信呼叫起来比较不方便。所以Android提供aidl.exe工具来协助产出Proxy和Stub类别以化解这个困难。只要你善于使用开发环境的工具(如Android的aidl.exe软件工具)自动产生Proxy和Stub类别的程序代码那就很方便 了。   范例 此范例使用Android-SDK的/tools/里的aidl.exe工具程序根据接口定义档(如下述的mp3PlayerInterface.aidl)而自动产出Proxy及Stub类别其结构如下 藉由开发工具自动产出Proxy及Stub类的代码再分别转交给ac01和mp3Binder开发者。此范例程序执行时出现画面如下依据UI画面的两项功能 Play和 Stop以Java定义接口如下的代码 // mp3PlayerInterface.aidl interface mp3PlayerInterface mp3PlayerInterface{void play();void stop(); } 使用Android-SDK所含的aidl.exe工具将上述的mp3PlayerInterface.aidl档翻译成为下述的mp3PlayerInterface.java档案。 // mp3PlayerInterface.java /* * This file is auto-generated. DO NOT MODIFY. * Original file: mp3PlayerInterface.aidl */ // ……… public interface mp3PlayerInterface extends android.os.IInterface {/** Local-side IPC implementation stub class. */public static abstract class Stub extends android.os.Binder implements com.misoo.pkgx.mp3PlayerInterface{// ……….public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException{switch (code){case INTERFACE_TRANSACTION:{reply.writeString(DESCRIPTOR);return true;}case TRANSACTION_play:{data.enforceInterface(DESCRIPTOR);this.play();reply.writeNoException();return true;}case TRANSACTION_stop:{data.enforceInterface(DESCRIPTOR);this.stop();reply.writeNoException();return true;}}return super.onTransact(code, data, reply, flags);}private static class Proxy implements com.misoo.pkgx.mp3PlayerInterface{private android.os.IBinder mRemote;//………….public void play() throws android.os.RemoteException{android.os.Parcel _data android.os.Parcel.obtain();android.os.Parcel _reply android.os.Parcel.obtain();try {_data.writeInterfaceToken(DESCRIPTOR);mRemote.transact(Stub.TRANSACTION_play, _data, _reply, 0);_reply.readException();}finally {_reply.recycle();_data.recycle();} }}public void stop() throws android.os.RemoteException{android.os.Parcel _data android.os.Parcel.obtain();android.os.Parcel _reply android.os.Parcel.obtain();try {_data.writeInterfaceToken(DESCRIPTOR);mRemote.transact(Stub.TRANSACTION_stop, _data, _reply, 0);_reply.readException();}finally {_reply.recycle();_data.recycle();}}static final int TRANSACTION_play (IBinder.FIRST_CALL_TRANSACTION 0);static final int TRANSACTION_stop (IBinder.FIRST_CALL_TRANSACTION 1);}public void play() throws android.os.RemoteException;public void stop() throws android.os.RemoteException; } 表面上此mp3PlayerInterface.java是蛮复杂的其实它的结构是清晰又简单的只要对于类继承、反向調用和接口等面向对象观念有足够的认识就很容易理解了。 // mp3Binder.java package com.misoo.pkgx; import android.content.Context; import android.media.MediaPlayer; import android.util.Log;public class mp3Binder extends mp3PlayerInterface.Stub{private MediaPlayer mPlayer null;private Context ctx;public mp3Binder(Context cx){ ctx cx; }public void play(){if(mPlayer ! null) return;mPlayer MediaPlayer.create(ctx, R.raw.test_cbr);try { mPlayer.start();} catch (Exception e){ Log.e(StartPlay, error: e.getMessage(), e); }}public void stop(){if (mPlayer ! null){ mPlayer.stop(); mPlayer.release(); mPlayer null; }} } 撰写mp3RemoteService类   // mp3Service.java package com.misoo.pkgx; import android.app.Service; import android.content.Intent; import android.os.IBinder;public class mp3Service extends Service {IBinder ib null;Override public void onCreate() {super.onCreate();ib new mp3Binder(this.getApplicationContext());}Override public void onDestroy() { }Override public IBinder onBind(Intent intent) {return ib;} }// ac01.java // ……… public class ac01 extends Activity implements OnClickListener {//……….private PlayerProxy pProxy null;public void onCreate(Bundle icicle) {// ………startService(new Intent(com.misoo.pkgx.REMOTE_SERVICE));bindService(new Intent(com.misoo.pkgx.REMOTE_SERVICE),mConnection, Context.BIND_AUTO_CREATE);}private ServiceConnection mConnection new ServiceConnection() {public void onServiceConnected(ComponentName className,IBinder ibinder) {pProxy mp3PlayerInterface.Stub.asInterface(ibinder);}public void onServiceDisconnected(ComponentName className) {}};public void onClick(View v) {switch (v.getId()) {case 101: pProxy.play(); tv.setText(pProxy.getStatus()); break;case 102: pProxy.stop(); tv.setText(pProxy.getStatus()); break;case 103:unbindService(mConnection);stopService(new Intent(com.misoo.pkgx.REMOTE_SERVICE));finish(); break;}} } 对于Anrdoid的初学者而言 Android的        AIDL机制可说是最难弄懂的。
http://www.w-s-a.com/news/794748/

相关文章:

  • 电商网站的功能手机广告设计与制作软件
  • 做网站前端需要编程基础吗杭州市住房和城乡建设局
  • 网站开发一般学多久网站建设投标方案
  • 北京网站建设报价表制作短视频的软件有哪些
  • 长沙企业网站开发西安建设公司网站
  • 做图的兼职网站网站开发用了哪些知识要点
  • php网站怎么做静态化微慕wordpress插件
  • 电商营业执照wordpress利于seo
  • 那些网站主做玄幻小说营销策略都有哪些方面
  • 同一源代码再建设一个网站建立网站免费
  • 网站更换服务器影响做seo必须有网站吗
  • 免费网页模板网站php微信微网站怎么做
  • 网站的优点和缺点腾讯企点是什么软件
  • 谷歌英文网站推广网页设计好看的网站
  • 衡水网站建设集团各大网站注册
  • 违法网站开发做注册任务网站源码
  • 帝国cms仿站工具淮南寿县
  • 深圳网站建设方案外包手机怎样使用域名访问网站
  • 安陆市建设局网站磐安做网站
  • 梧州市建设局官方网站商旅100网页版
  • 好的宝安网站建设中企动力的网站开发语言
  • flash网站模板怎么用怎么套模板 网站
  • 建设二手商品网站总结石景山安保服务公司电话
  • 网站建设对于企业的重要性龙岗企业网站设计公司
  • 网站搭建在线支付数码产品网站模板
  • 白云网站建设多少钱WORDPRESS添加前台会员注册
  • 商业网站模板中国字体设计网站
  • 做网站闵行网站建设中英语
  • 写作网站大全如何简单制作生理盐水
  • 云南网站建设维护互联网广告是做什么的