2010-09-23 49 views
0

我正在开发Android应用程序,并且正在使用我编写的库。这个库有一个包含一些静态字段的类。其中之一是API密钥。该密钥由我的库中的其他类用于在远程服务上进行调用。不保留所有活动的静态参数

当我创建并且savedInstanceState为null时,我在主Activity上初始化API密钥一次。

我的问题在于其他活动,因为他们在与我的图书馆打电话时有时会使用正确的API密钥,有时他们不会。看起来好像没有设置API密钥。

特别是有一个活动,我从我的首选项活动调用,总是失败,因为没有设置API密钥。

活动中不存在静态字段,因为它们在普通的Java应用程序上?我认为对于特定的jvm实例,所有静态字段都会保留。 Android平台是否将新的jvm实例用于新的活动?

+0

您应该使用sharedPreference而不是静态全局变量来实现此功能 – Falmarri 2010-09-24 00:14:16

+0

该库仅写入java特定的内容。它不知道它将运行的平台。你是说在android中静态字段是不稳定的? – 2010-09-24 00:40:29

回答

1

请阅读:??

http://developer.android.com/guide/topics/fundamentals.html#procthread

您的应用正在运行中。该进程可能需要在后台处理时被杀死。您的应用程序必须正确保存任何状态,因为它在后台进行(通过前Activity.onSaveInstanceState())和/或重新构建后续在新进程中重新启动时的状态。

+0

我看到了...我以为只有活动被杀死了,而不是整个过程..所以我想我需要保存并恢复我在所有活动中的静态字段...... :( – 2010-09-24 03:25:02

0

您以直接或间接方式访问静态字段是否还有其他活动惹的API密钥如果是这样,你应该​​访问之前

+0

Γειάκαισεσένα:)我设置并通过方法获取成员只。而且我只在一次地方设置它,一次(或者只要我的主要活动在没有保存状态的情况下创建)。在所有其他地方,我只是明白。 – 2010-09-23 23:55:57