创建Android中所有活动均可访问的对象

创建Android中所有活动均可访问的对象,android,Android,我正在尝试创建一个包含对象的数据的ArrayList(比如地址和属性列表(相当复杂)),我想知道:如何让一个对象可以被所有活动访问(和编辑),而不仅仅是它在其中实例化的活动 基本上: 在活动1中创建数组 访问活动2和活动3中的相同数组 利润 您应该将其设置为静态,并从任何其他活动访问它。您可以扩展应用程序类。然后在那里添加数组 您可以使用以下命令访问该类的实例 MyApplication appContext = (MyApplication)getApplicationContext();

我正在尝试创建一个包含对象的数据的ArrayList(比如地址和属性列表(相当复杂)),我想知道:如何让一个对象可以被所有活动访问(和编辑),而不仅仅是它在其中实例化的活动

基本上:

  • 在活动1中创建数组
  • 访问活动2和活动3中的相同数组
  • 利润

  • 您应该将其设置为静态,并从任何其他活动访问它。

    您可以扩展应用程序类。然后在那里添加数组

    您可以使用以下命令访问该类的实例

    MyApplication appContext = (MyApplication)getApplicationContext();
    

    最简单的方法是创建一个单例。它是一种只能创建一次的对象,如果您再次尝试访问它,它将返回该对象的现有实例。 在这里面你可以控制你的阵型

    public class Singleton  {
        private static final Singleton instance = new Singleton();
    
        // Private constructor prevents instantiation from other classes
        private Singleton() {
        }
    
        public static Singleton getInstance() {
            return instance;
        }
    
    }
    
    了解更多有关单身人士的信息:

    您可以创建一个常量类,并将ArrayList声明为静态变量

    1.)


    使用静态关键字怎么样

    公共静态SomeClass someObject


    在启动对象的activity类中-在Activity1中,在public static中声明数组

    public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>();
    

    您可以在其他java文件旁边创建一个java文件x。 x文件包含静态方法,用于访问类方法而不实例化它。 现在创建一个名为createVariable()的方法,并声明要使其全局化的变量。 现在创建一个名为getVariable()的方法,该方法返回全局变量

    此时您要创建全局变量,请调用className.createVariable()

    要访问该变量,请调用className.getVariable()。 下面是我的数据库类示例

    public class GlobalDatabaseHelper{
    
        static DatabaseHelper mydb;
        public static DatabaseHelper createDatabase(Context context)
        {
            mydb = new DatabaseHelper(context);
            return mydb;
        }
    
        public static DatabaseHelper returnDatabase()
        {
            return mydb;
        }
    }
    

    谢谢你的回答!这也是最有效的方式吗?Singleton的效率有多高?Singleton的缺点是:由于对象没有实际所有者,garbagecollector永远不会将其从内存中删除,因此只要应用程序处于活动状态(直到onDestroy),它就会占用内存。但是,我们也可以考虑,你不必总是创建新的对象,这给了你更好的速度和更少的内存使用。
    public static ArrayList<HashMap<String, String>> myArray = new ArrayList<HashMap<String, String>>();
    
    Activity1.myArray
    
    public class GlobalDatabaseHelper{
    
        static DatabaseHelper mydb;
        public static DatabaseHelper createDatabase(Context context)
        {
            mydb = new DatabaseHelper(context);
            return mydb;
        }
    
        public static DatabaseHelper returnDatabase()
        {
            return mydb;
        }
    }