Android 活动生命周期的困惑

Android 活动生命周期的困惑,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有一个应用程序可以验证用户访问内部活动的身份,该应用程序有几个活动可以从以前的活动中获取数据 所以我对活动生命周期有点困惑 我将捆绑数据读入activity OnCreate中的局部变量,并基于该数据在异步任务中读取DB。此数据库数据显示在我的应用程序上 现在,如果我切换到另一个应用程序,我的应用程序是否会带有本地变量/静态变量数据(从DB数据读取) 我有一个SingleInstance类,它保存用户票证等信息,若我们在其间接到电话,这个变量会保存在应用程序的内存中 在这方面我有点困惑 正如文

我有一个应用程序可以验证用户访问内部活动的身份,该应用程序有几个活动可以从以前的活动中获取数据

所以我对活动生命周期有点困惑

我将捆绑数据读入activity OnCreate中的局部变量,并基于该数据在异步任务中读取DB。此数据库数据显示在我的应用程序上

现在,如果我切换到另一个应用程序,我的应用程序是否会带有本地变量/静态变量数据(从DB数据读取)

我有一个SingleInstance类,它保存用户票证等信息,若我们在其间接到电话,这个变量会保存在应用程序的内存中

在这方面我有点困惑

正如文档所建议的,您需要将未保存的数据存储在共享首选项中


如果有人强调这一点就好了。

好吧,首先你需要确保你了解新应用程序和新活动之间的区别,根据以下句子:

现在,如果我切换到另一个应用程序,在切换回我的应用程序后,我的应用程序是否会带有该DB数据

如果你实际上指的是不同的应用程序,答案是“在另一个应用程序中没有(如果你的应用程序也是)”你不能访问另一个应用程序数据库(至少不能直接访问),唯一的方法是如果该应用程序实现了内容提供商,以便与另一个应用程序共享其数据,默认情况下,android应用程序就像沙盒一样,不会与其他应用程序共享任何信息,除非明确声明,使用相同密钥签名的两个应用程序之间还有另一条规则,但这是一个不同的故事,是一个与此问题无关的巨大进步主题

如果“您的意思是转到另一个应用程序(不是我的),然后再次尝试从我的应用程序使用它”,答案是“是”,则数据库中的信息可以在属于同一应用程序的所有建筑组件(如“活动、服务”)中访问,即使完全关闭应用程序,数据库中的信息也会保持不变(共享偏好也是如此),但共享偏好和DB之间有着巨大的区别,知道何时使用这两种方式可以区分优秀和优秀的开发人员,黄金法则(但不是唯一的或最好的)也就是说,DB用于复杂的查询和关系数据,这些查询和数据需要某种预处理或后处理来获得适当的值,这意味着共享首选项只是一个“键/值”映射,在应用程序上下文中保持不变

希望这有帮助


注意!

如果在后台加载活动,则活动的数据将保留在活动变量中…onResume允许您在代码中放入一些控制语句,以便从后台检测到Forground。因此,如果我在onCreate中执行异步任务,并在Async任务“onPost方法”中执行异步任务将已读取的db数据推送到我的UI。此UI将在睡眠或锁定解锁或切换到另一个应用程序时保留数据。我的意思是db数据意味着从db读取的本地变量数据。因此,如果我在onCreate和Async任务“onPost方法”中执行异步任务将已读取的db数据推送到我的UI。此UI将在睡眠或锁定解锁或切换到其他应用时保留数据