在一个package内,我知道该如何通讯,在两个不同的package我还不清楚,请高手指示一下,在下学习了。
AIDL定义服务接口肯定可以满足同一个package内的通讯,但是不知道AIDL定义服务接口是否满足不同package之间的通讯。欢迎大家参与讨论,如果有什么好的通讯方式,也都介绍一下,多多给分。

解决方案 »

  1.   

    两个 package ?  
      

  2.   

    Messenger和AIDL
    前者比较简单,后者我还没机会用到过。
      

  3.   

    AIDL就是远程服务,就是为了执行进程间通信的,除了可以承载服务的应用程序访问,还可以从其他应用程序访问。远程服务使用AIDL向客户端定义自身。
    无论你的两个package是不是在一个应用程序内,都可以用AIDL进行通信。
      

  4.   

    AIDL就是解决跨进程访问的服务器模式,不同package当然可以使用了,系统中的service都是AIDL提供的啊,楼主你多看看music.git源码了解下AIDL
      

  5.   

    楼上的各位高手,关于不同package的AIDL通讯是否有相关的例子,我看到的都是在一个package内的AIDL通讯,请赐教。
      

  6.   

    这里有个例子 http://www.eoeandroid.com/forum-viewthread-tid-19385-highlight-aidl.html知道了package内的aidl通讯,修改一下就可以用在两个package了。服务端的service要加上一个intent-ftlter,添加一个action项,方便其他的package能启运它。然后这个service的属性添加上android:process=":remote" 让服务在远程进程中运行。
      

  7.   

    AIDL文件是用来生成JAVA接口的
    //P1.adil
    package com.android.P1service;
    interface IP1service
    {
      ...
    }//P1service.java
    import android.app.service;public class P1service extends Service
    {
      ......
    }
    //P2.java
    import com.android.P1service.IP1service;public class P2 extends Activity
    {
      
    }
      

  8.   

    用广播也可以做到...AIDL觉得太麻烦
      

  9.   

    个人觉得AIDL比较好使。  给你创建AIDL实现数据共享的步骤吧  http://www.docin.com/p-120987445.html希望能够帮助你‘
      

  10.   

    看了8楼地址的例子,有点问题import com.lifeblood.ITestService.Stub;
    服务端import出错The import com.lifeblood.ITestService cannot be resolved客户端正常,不知道什么原因
      

  11.   

    8楼的方法有些地方说得有些耸人听闻,他里面说的名字必须怎样怎样,几乎都不是必须的。楼上的import出错,是你放的位置不正确。
      

  12.   

    用Intent广播就可以了.用不着那么复杂.
      

  13.   

    谢谢各位了,广播肯定是可以的,不过我觉得AIDL应该更专业,结贴了,再次感谢大家。