首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >静态变量在活动之间交换数据真的安全吗?

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

Stack Overflow用户
提问于 2011-12-14 11:51:22
回答 7查看 2.3K关注 0票数 6

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

活动1:具有“开始”按钮的应用程序的主屏幕活动2:用户从列表中选择其标识(多个用户将使用application)

  • Activity 3:用户输入password

  • Activity 4:用户从时间表中选择事件(每个用户都有自己的时间表和相关的events)

  • Activity 5:用户可以选择与活动相关的操作)。

  • 活动6-10:用户执行适当的操作。

以下是更多信息:

6-10中的每个活动都必须知道登录的是什么用户,以及selected

  • every活动是什么事件(从6-10开始)有一个菜单,允许用户返回活动:1(注销),4(选择不同的事件),5(选择不同的操作)

从现在起,我一直使用包在活动之间交换数据,但随着操作数量的增加,代码似乎变得复杂了(有些操作使用3-4个活动从用户收集数据)。将所有数据传递给每个创建的活动似乎不太好。

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

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-14 11:58:08

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

这可能会发生在现在,但不,这不是我所说的“安全”。

票数 3
EN

Stack Overflow用户

发布于 2011-12-14 12:02:09

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

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

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

代码语言:javascript
运行
复制
public class CustomApplication extends Application {
    private String userId;

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

    public String getUserId() {
        return userId;
    }

    ...
}

从活动调用:((CustomApplication) getApplicationContext()).getUserId();

票数 5
EN

Stack Overflow用户

发布于 2011-12-14 11:57:34

您可以为此使用SharedPreference,而不是在类中使用静态变量/对象。看看这个博客http://android-er.blogspot.com/2011/01/example-of-using-sharedpreferencesedito.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8504001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档