App crashes when restoring from background after a long time

前端 未结 5 1511
执笔经年
执笔经年 2020-12-05 10:57

My application crashes after idling for a long time in the background. I debugged and found the reason that it is crashing is due to a NullPointerException. Exc

5条回答
  •  有刺的猬
    2020-12-05 11:36

    For more accurate answer you put your code here. On, Android memory is limited so VM can remove any piece of code it think un-necessary.

    Look into Activity life-cycle method, specially into onResume and make sure that you understand that perfectly. So many time application crashes just for not using Activity life-cycle method properly.

    Another important design consideration for Activity is, no matter what happened with persistence data you Activity should display its UI with some default value. So assumption is like this, if i have data i will display if i don't, i really do not care. Your UI should never ever crash with or without data. You can use String.xml for storing some default value or even in layouts.

    if you still want go with singleton class, which is perfectly fine but make sure you do the following checking every time you try to access your singleton.

    if (instance==null)
        instance=Singleton.getInstance()
    

    your getInstance() method not only return you current instance it will also make sure that

    • it initializes all object and variable
    • other singleton methods as instance method

    Do not statically access data from one Activity to another. It is not good for android specially for the type problem you are facing now and also it is not very good OOP programming practice.

    SharedPreference is good way to persist data, if that meet your requirement go for it.

    if you want to pass data from different Android component like Activity, Service or BroadcastReciever you can put it inside a bundle and and send as intent. And, as always their are SQLLite data storage, file IO etc etc.

提交回复
热议问题