我应该如何将单例对象传递给Android活动?

时间:2013-09-03 09:21:22

标签: android singleton arguments

我正在开发一个使用两个单例对象的Android应用程序:一个用于业务逻辑(类似于MVC中的模型),另一个用于蓝牙连接。有些活动显示数据并需要访问前者,而有人可以让用户连接/断开连接并需要访问后者。

传递这些物体的首选方法是什么?对活动的争论?全球对象?

3 个答案:

答案 0 :(得分:2)

您可以使用Application课程。它是那些需要维护全局应用程序状态的人的基类。您可以通过在AndroidManifest.xml的标记中指定其名称来提供自己的实现,这将导致在创建应用程序/包的过程时为您实例化该类。

通常不需要子类Application。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。如果你的单例需要一个全局上下文,那么检索它的函数可以给一个Context,它在第一次构造单例时在内部使用Context.getApplicationContext()。

ref- http://developer.android.com/reference/android/app/Application.html

Ex-在App类中定义

  public class AppData extends Application{

    Object ob = new Object(); //Global Obj - Can be anything String etc
  }

初始化为acticity,如 -

   AppData ad= (AppData)getApplicationContext();
   ad.ob = //yourValue

访问各项活动 - >

  Object obj = ((AppData)getApplicationContext()).ob;

并在清单中提供您的应用类的名称 -

    <application
    android:name=".AppData"
     >

答案 1 :(得分:1)

您可能想查看Dagger。这个依赖注入框架(针对Android进行了优化)允许轻松地将单例注入您的活动/片段。

答案 2 :(得分:1)

// define this code in your common data access class which use thought your app or application master class    

private static Object object=null;
public synchronized static Object getInstance(){
    if(object==null){
        object = new Object();
    }
    return object;
 }

 // this way define your two object.