静态变量在活动之间交换数据真的很安全吗?

kma*_*mur 6 android design-patterns

我正在开发一个由几个活动组成的应用程序:

  • 活动1:带有"开始"按钮的应用程序的主屏幕
  • 活动2:用户从列表中选择其身份(多个用户将使用该应用程序)
  • 活动3:用户输入密码
  • 活动4:用户从时间表中选择一个事件(每个用户都有自己的时间表和相关事件)
  • 活动5:用户可以选择与活动相关的操作.
  • 活动6-10:用户执行适当的操作.

以下是一些更多信息:

  • 6-10的每个活动都必须知道用户登录了什么以及选择了什么事件
  • 每个6-10的活动都有一个菜单,允许用户返回活动:1(退出),4(选择不同的事件),5(选择不同的动作)

从现在开始,我一直在使用bundle来在活动之间交换数据,但随着操作数量的增加(某些操作使用3-4个活动从用户收集数据),它似乎使代码复杂化.将所有数据传递给每个创建的活动似乎都不太好.

我正在考虑将"用户名"和选定的"事件"存储为类的静态字段.我会非常简化代码,但是我不确定如果用户在某个时候说"主页按钮"并运行另一个需要大量内存的应用程序,这些数据是否会持续存在.

存储在静态字段中的数据是否安全?

Chr*_*nes 5

最好有一个自定义的Application对象并将它们存储在那里.应用程序对象将像您的应用程序一样生存.

http://developer.android.com/reference/android/app/Application.html

您可以通过将getApplicationContext()强制转换为您的自定义应用程序类型来访问Application对象:

public class CustomApplication extends Application {
    private String userId;

    public void onCreate() {
        super.onCreate();
        ...
    }

    public String getUserId() {
        return userId;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

来自活动电话: ((CustomApplication) getApplicationContext()).getUserId();


Sea*_*wen 3

不。不能保证这些都存在于同一个类加载器中,在这种情况下,您将在不同位置处理这些类的不同副本,并且不会访问相同的共享状态。

它现在可能会起作用;但不,这不是我所说的“安全”。