http://blog.csdn.net/kieven2008/article/details/60069051.基于消息的通信机制  Intent ---boudle ,extra        数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。 
 2. 利用static静态数据,  public static成员变量; 
 3.基于外部存储的传输,    File/Preference/ Sqlite ,如果要针对第三方应用需要Content Provider 
   
 4.基于IPC的通信机制
     context 与Service之间的传输,如Activity与Service之间的通信,定义AIDL接口文件。
    示例: http://www.eoeandroid.com/thread-36249-1-1.html
 5. 基于Application Context, 例子如下文: 
  
  
 
     在当前Activity将两个值传到了Test中。但如果遇到不可序列化的数据,如Bitmap、InputStream等,intent就无能为力了。因此,我们很自然地会想到另外一种方法,静态变量。如下面的代码所示:
 
     public  class  Product  extends  Activity
    {
          public  static  Bitmap mBitmap;
           
    }
 
     对于上面的代码来说,其他任何类可以直接使用Product中的mBitmap变量。这么做很easy、也很cool,但却very very  wrong。我们千万不要以为Davlik虚拟机的垃圾回收器会帮助我们回收不需要的内存垃圾。事实上,回收器并不可靠,尤其是手机上,是更加的不可靠。  因此,除非我们要使自己的程序变得越来越糟糕,否则尽量远离static。
 注:如果经常使用static的Bitmap、Drawable等变量。可能就会抛出一个在Android系统中非常著名的异常(以前budget这个单词一直记不住什么意思,自从经常抛出这个异常后,这个单词终于烂熟于心了, )
 ERROR/AndroidRuntime(4958): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
 
     如果不使用static,总得有方法来代替它(尽管我很喜欢public  static,我相信很多人也喜欢它,但为了我们的程序,建议还是忍痛割爱吧),那么这个新的解决方案就是本文的主题,这就是Application  Context,相当于Web程序的Application,它的生命周期和应用程序一样长(这个我喜欢)。
     那么现在来看看如何使用这个Application  Context。我们可以通过Context.getApplicationContext或Context.getApplication方法获得  Application  Context。但要注意,我们获得的只是Context对象,而更理想的方法是获得一个类的对象。ok,说干就干,下面来定义一个类。
 
 package  net.blogjava.mobile1;
 import  android.app.Application;
 import  android.graphics.Bitmap;
 public  class  MyApp  extends  Application
 {
      private  Bitmap mBitmap;
      public  Bitmap getBitmap()
     {
          return  mBitmap;
     }
      public  void  setBitmap(Bitmap bitmap)
     {
          this .mBitmap  =  bitmap;
     }
     
 }
 
     上面这个类和普通的类没什么本质的不同。但该类是Application的子类。对了,这就是使用Application  Context的第一步,定义一个继承自Application的类。然后呢,就在这个类中定义任何我们想使其全局存在的变量了,如本例中的  Bitmap。下面还需要一个重要的步骤,就是在<application>标签中使用android:name属性来指定这个类,代码如  下:
 
 < application  android:name =".MyApp"  android:icon ="@drawable/icon"  android:label ="@string/app_name" > 
  
 </ application?
 
     接下来的最后一步就是向MyApp对象中存入Bitmap对象,或从MyApp对象中取出Bitmap对象了,存入Bitmap对象的代码如下:
 
     MyApp myApp  =  (MyApp)getApplication();
         
     Bitmap bitmap  =  BitmapFactory.decodeResource( this .getResources(), R.drawable.icon);
         
     myApp.setBitmap(bitmap); 
     获得Bitmap对象的代码:
     ImageView imageview  =  (ImageView)findViewById(R.id.ivImageView);
         
     MyApp myApp  =  (MyApp)getApplication();
         
     imageview.setImageBitmap(myApp.getBitmap()); 
     
     上面两段代码可以在任何的Service、Activity中使用。全局的。
 
参考:
 1.http://flyvenus.net/?p=229
 2.http://blog.csdn.net/nokiaguy/archive/2010/11/10/5998986.aspx