什么是最大单身对象大小?安卓

时间:2014-08-07 08:05:38

标签: android singleton

我的应用程序中有这个单例:

 class singleTon{
         private static singleTon myInstance;
         private ArrayList<City> cities;
         private ArrayList<Category> categories
         private ArrayList<Business> businesses;

        private singleTon()
       {
       }        

        public static singleTon getInstance(){

           if(myInstance == null)
           {
                myInstance =  new singleTon();
           }
           return myInstance;
        }

        public ArrayList<City> getCities(){
         return categories;
        } 

        public void setCities(ArrayList<City> cities){
             this.cities = cities;
        }

    }

此代码在galaxy s5上工作正常,但有时当app在后台运行时它会在galaxy s3上崩溃(Null指针异常)。 因此,当我删除类别列表和商家列表时,它在两个智能手机上运行良好。 当操作系统非常大时,操作系统是否会删除它?

崩溃报告:

java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
at android.app.ActivityThread.access$700(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.net.screens.MainView.setIDsOfLayout(MainView.java:467)
at com.example.net.screens.MainView.onCreate(MainView.java:80)
at android.app.Activity.performCreate(Activity.java:5250)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)

1 个答案:

答案 0 :(得分:0)

您是否尝试在任何地方访问categoires或企业?你有吸气剂和吸气剂吗?我的钱在他们身上永远不会被初始化并且在尝试访问它们时抛出NPE。您应该将它们初始化为私有构造函数中的新列表。

private singleTon(){
    cities = new ArrayList<City>();
    categories = new ArrayList<Category>();
    businesses = new ArrayList<Business>()
}