2011-04-09 162 views

回答

2

是的。创建扩展android.app.Application一类,然后在清单把这个类作为您的应用程序

<application android:name=".ClassNameOfTheClassYouCreated"...> 
    ...activities etc here... 
</application> 

现在的名字,你创建的类是您的应用程序。只要应用程序正在运行,它的生命周期就一直存在,它拥有活动堆栈,您可以添加一些自定义字段来保存您的值。要从Activity获得Application实例,请点击this.getApplication()

关于字段值被重置的编辑(回应@hackbod的推荐):在单例中使用静态字段是保存全局值的另一种方式,但我觉得提出的更优雅。就像你提到的重置值一样,这也可能发生在其他情况下(如来电,方向改变),这就提出了在使用它们之前需要清理(或检查存在,称之为任何你喜欢的)值的需要。总是!

+1

这是强烈反对。使用这种方法可以通过你的应用程序创建各种不好的细微流程。例如,如果您在活动A中的应用程序中放置了一个值,并在活动B中使用它,那么用户将按下home,您的进程将被终止,并且它们会返回到您的应用程序中......它们将返回到活动B ,但是在一个新的过程中,所以应用程序不再保留你最后设置的值。此外,更一般地说,使用无论如何不会有什么好处 - 您可能只需将该值放在一些静态全局中,即相同的事物,并且更加模块化。 – hackbod 2011-04-09 08:39:41

+0

@hackbod我总是发现它对绘制缓存很有用。 1)我不在乎图像何时放入或何时被清除我只希望缓存可用于所有实例,并且2)将任何内容放入静态变量是内存泄漏的通道。但是,我想我不会将它用于任何状态信息。 – 2011-04-09 09:15:57

+0

@hackbod我为你编辑了答案。此外,主页按钮不会杀死任何东西。即使后退按钮也不会杀死任何东西。 – 2011-04-09 09:19:00

0

信息流可以以不同的方式实现,所有你需要的是一种方法来保存和检索数据。

您可以保存,然后让你的数据,你想让它通过使用网络通过静态类,文件存储,数据库,甚至远程存储流量。

意图是更好的方法。 Android创建它,所以使用它。 :)

0

http://developer.android.com/guide/topics/providers/content-providers.html

内容提供商存储和检索数据并使其对所有应用程序进行访问。他们是跨应用程序共享数据的唯一方式;没有所有Android软件包可以访问的公共存储区域。

如果您想公开自己的数据,您有两种选择:您可以创建自己的内容提供者(ContentProvider子类),也可以将数据添加到现有的提供者 - 如果有一个控件类型相同的数据,你有权写入。

+0

为内容提供商提供一个示例,将价值从一项活动传递给另一项对我有帮助的活动 – NandaKumar 2011-04-11 14:59:02

相关问题