ǰλã >> Android >> android 进程间?方式
  ϸ

android 进程间?方式

ȶȣ370   ʱ䣺2016-04-24 12:05:53.0
android 进程间?信方式

由于android系统?用程序之间不能共?存?因此,在不同应用程序之间交互数?跨进程??)就稍微麻烦?些?在android SDK?供了4种用于跨进程通?的方式?这4种方式?好?应于android系统?种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity?跨进程调用其他应用程序的Activity;Content Provider?跨进程??他应用程序中的数??ursor对象形式返回),当然,也?对其他应用程序的数据进?增?删、改?作;Broadcast?向android系统?有应用程序发送广?而需要跨进程通?的应用程序可以监?些广?Service和Content Provider类似,也?访问其他应用程序?数据,但不同的是,Content Provider返回的是Cursor对象,?Service返回的是Java对象,这种可以跨进程通?的服务叫AIDL服务?/p>

?:Activity既可以在进程内(同一?用程序)访问,也?跨进程????果想在同??用程序中访问Activity,需要指定Context对象和Activity的Class对象

Activity既可以在进程内(同一?用程序)访问,也?跨进程????果想在同??用程序中访问Activity,需要指定Context对象和Activity的Class对象

跨进程?问Activity(??他应用程序中的Activity)主要是通过?个Action来完成的,?果?传?数?还需 要指定一个Uri。当然,传?数??通过Intent来完成?传递数?过程??向的。?果?想从调用的Activity?回数?就需要使?startActivityForResult方法来启动Activity了??/p>

 

二:Android应用程序?使用文件或SqlLite数据库来存储数据。Content Provider提供了一种在多个应用程序之间数据共享的方式(跨进程共??。应用程序可以利用Content Provider完成下面的工?/p>

虽然Content Provider也可以在同一?用程序中???但这么做并没有什么意义?Content Provider存在的目的向其他应用程序共享数据和允许其他应用程序?数据进?增?删、改操作?/p>

Android系统?提供了很多Content Provider,例如,音?、?频?联系人信息等等。我?以?过这些Content Provider获得相关信息的列表?这些列表数??ursor对象返回。因此,从Content Provider返回的数?二维表的形式?/p>

要注意的?访问ContentProvider的URI必须以?content://”开头??/p>

由于安?了ContentProvider的应用程序会先调用ContentProvider的onCreate方法(?方法会在Activity?onCreate方法之前调用),因?,只?要将打开或?制数?的方法(openDatabase)放?DictionaryContentProvider类中,并在onCreate方法?用即???/p>

 

三:广播(Broadcast?br>       广播?种?动跨进程通?的方式?当某个程序向系统发送广?,其他的应用程序??地接收广???这就象电台进?广播?样,???地收?而不能主动与电台进?沟???br> 在应用程序中发?广?较简单?只?要调用sendBroadcast方法即可。?方法?要一个Intent对象。?过Intent对象?发?需要广?数据?/p>

 

四:AIDL服务
       服务(Service)是android系统?常重要的组件。Service?脱?应用程序运?。也就是说,应用程序?到一?动Service的作用?一但Service??就算应用程序关闭,Service仍然会在后台运??/p>

android系统?Service主?有两??后台运?和跨进程通?。后台运行就不用说了,当Service?后,就可以在Service对象 ?运?相应的业务代码,而这?切用户并不会察?。?跨进程通???节的主?。?果想让应用程序可以跨进程通?,就要使用我?节?的AIDL?务,AIDL的全称是Android Interface Definition Language,也就是说,AIDL实际上是?种接口定义??。?过这??定义接口后,Eclipse插件(ODT)会?生成相应的Java代码?口代码??/p>

  在编写AIDL服务和?户?时?注意如下两点?br>  
1.  AIDL服务?onBind方法必须返回AIDL接口对象(MyServiceImpl对象)??对象也是onServiceConnected事件方法的?2?数???br> 2.  bindService方法的?1?数是Intent对象,?对象构?方法的参数?要指定AIDL服务的ID,也就是?AndroidManifest.xml文件?lt;service>标??lt;action>子标签的android:name属??的???/p>