【问题标题】:How should I pass around singleton objects to Android activities?我应该如何将单例对象传递给 Android 活动?
【发布时间】:2013-09-03 09:21:21
【问题描述】:

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

传递这些对象的首选方式是什么?对活动的争论?全局对象?

【问题讨论】:

    标签: android singleton arguments


    【解决方案1】:

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

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

    参考-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
      }
    

    初始化像 -

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

    跨活动访问->

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

    并在清单中给出您的应用类的名称-

        <application
        android:name=".AppData"
         >
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
        // 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.
        

        【讨论】:

          猜你喜欢
          • 2012-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多