Android 将值从一个活动传递到另一个活动的另一种方法

Android 将值从一个活动传递到另一个活动的另一种方法,android,android-intent,Android,Android Intent,通常我们在android中通过意向函数将值从一个活动传递到另一个活动。是否有其他方法可以在没有意向函数的情况下将值从一个活动传递到另一个活动。创建一个扩展了android.app.Application的类,然后在清单中把这个类作为应用程序的名称 <application android:name=".ClassNameOfTheClassYouCreated"...> ...activities etc here... </application> …这里的

通常我们在android中通过意向函数将值从一个活动传递到另一个活动。是否有其他方法可以在没有意向函数的情况下将值从一个活动传递到另一个活动。创建一个扩展了android.app.Application的类,然后在清单中把这个类作为应用程序的名称

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

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


编辑要重置的字段值(响应@hackbod的建议):在单例上使用静态字段是保存全局值的另一种方法,但我发现建议的方法更优雅。对于您提到的重置值的情况,这也可能发生在其他上下文中(如来电、方向更改),这就需要在使用值之前对值进行清理(或检查是否存在,随意调用)。永远

信息流可以通过各种方式实现,您所需要的只是一种保存和检索数据的方式

通过使用网络,您可以通过静态类、文件存储、数据库甚至远程存储来保存并获取数据

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

来自:

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

如果您想公开自己的数据,有两个选项:您可以创建自己的内容提供程序(ContentProvider子类),或者您可以将数据添加到现有的提供程序中—如果有一个提供程序控制相同类型的数据,并且您有权对其进行写入


这是强烈反对的。使用这种方法可以在你的应用程序中产生各种各样的不好的微妙的流。例如,如果您在活动a的应用程序中输入a值,并在活动B中使用该值,则用户按home键,您的进程将被终止,他们将返回到您的应用程序。。。它们将返回到活动B,但在一个新流程中,因此应用程序不再保存上次设置的值。而且,更一般地说,使用它也没有任何好处——你可以把值放在某个静态全局中,这是同样的事情,而且更加模块化。@hackbod我一直发现它对可绘图的缓存很有用。1) 我不在乎图像何时被放入或何时被清除,我只希望缓存可用于所有实例,2)在静态变量中放入任何具有上下文的内容都会导致内存泄漏。但是我想我不会把它用于任何州的信息。@hackbod我为你编辑了答案。而且,home按钮不会杀死任何东西。甚至“后退”按钮也不会杀死任何东西。她只是说,一个进程可以在任何时候被杀死,而不是说每次按Home键或back键时都会被杀死;使用“adb shell ps”查找您的流程;然后用“杀壳”来杀死它;现在回到你的应用程序。这将模拟当系统需要在后台关闭进程以获取内存时发生的情况。请提供一个示例,让内容提供商将值从一个活动传递到另一个活动,这对我很有帮助