建议单例类的静态字段

时间:2017-05-11 10:18:06

标签: java android architecture singleton

我正在开发一个项目,我希望在我的应用程序中传输数据。这些数据存在于数据模型类中,因此使用意图发送参数会使代码变得很大并且难以跟上,因为类的结构很复杂。

所以基本上我决定在扩展Application的单例类上创建这些类的静态实例,这有助于我轻松地设置和从这些对象获取数据。它有效。

问题:

我有点新,所以我不知道这是不是一个好方法。我读了一些关于它的东西here,但是根据建议将它们存储在本地数据库中并不适合我的情况。除了当我决定杀死你的应用程序时,还有任何危险吗?我的方法是单身类吗?

非常欢迎所有建议和建议。

提前致谢。

1 个答案:

答案 0 :(得分:1)

强制停止或终止应用后,您将丢失数据。

只是为了演示,您可以通过执行以下步骤来验证这一点。

  1. 在应用程序类public static int count = 0;
  2. 中创建一个静态int
  3. 记录int的值并将其递增Log.d("COUNT", String.valueOf(count)); count++;
  4. 销毁应用程序(从最近的应用程序向左/向右滑动)或从应用程序设置“强制停止”
  5. 重新启动应用并查看COUNT的日志它将为0,而不是1

    package com.test.app;
    
    import android.app.Application;
    import android.util.Log;
    
    public class MyApplication extends Application {
    
       public static int count = 0;
    
       @Override
       public void onCreate() {
    
          Log.d("COUNT", String.valueOf(count));
          count++;
      }
    }
    
  6. 最好将数据保存在某个地方。 Android杀死进程,它只取决于RAM状态和文档中描述的其他因素。在现实世界中,一些设备被应用程序“过载”,因此终止后台进程是正常情况。是的,如果用户然后决定将应用程序放到前台 - 操作系统将恢复其堆栈(包括应用程序实例),但是除非您持久保存,否则不会有您依赖的静态数据。

    请阅读this链接上的Limitations & Warnings部分。

    http://www.developerphil.com/dont-store-data-in-the-application-object/