Android 当活动被销毁时,保存listview项的最佳方法是什么?

Android 当活动被销毁时,保存listview项的最佳方法是什么?,android,database,listview,Android,Database,Listview,我正在制作一个应用程序,其中我在列表视图中向用户显示联系人。我想向用户显示相同的列表视图,直到和除非对联系人列表进行了一些更改。这里出现的问题是,当活动被销毁时,直到用户返回具有联系人列表视图的活动,我应该将listview中的项目存储在哪里,以便再次向用户显示它们?我认为有3个选项可用: 1. Sqlite database 2. SdCard 3. Shared Preferences 我无法决定保存项目的最佳选项是什么,以便以后检索。在我的情况下,列表视图中的项目数可能高达1000。请帮

我正在制作一个应用程序,其中我在列表视图中向用户显示联系人。我想向用户显示相同的列表视图,直到和除非对联系人列表进行了一些更改。这里出现的问题是,当活动被销毁时,直到用户返回具有联系人列表视图的活动,
我应该将listview中的项目存储在哪里,以便再次向用户显示它们
?我认为有3个选项可用:

1. Sqlite database
2. SdCard
3. Shared Preferences

我无法决定保存项目的最佳选项是什么,以便以后检索。在我的情况下,列表视图中的项目数可能高达1000。请帮助我。提前感谢。

您可以使用SQLite数据库,因为它受到保护,您还可以使用SD卡和任何文件格式(如属性文件、csv…等)保存列表详细信息,但是,SD卡介质与所有应用程序共享,用户也可以访问。由于联系人太多,我不建议共享首选项,因为在SQLite中无法获取详细信息和运行查询。

您可以使用SQLite数据库,因为它受到保护,您还可以使用SD卡和任何文件格式,如属性文件,csv…等来保存您的列表详细信息,但是SD卡介质与所有应用程序共享,用户也可以访问。有这么多联系人,我不建议共享首选项,因为获取详细信息和运行查询不可能像在SQLite中一样。

在您的情况下,您肯定应该使用SQLite

以下是在什么时间使用哪个存储选项的简要说明:

共享首选项: 这些基本上适用于存储应用程序首选项和其他少量数据。SharedReferences是一种键/值存储,您可以在其中以特定键保存数据。要从存储中读取数据,您必须知道数据的密钥。因此,读取数据变得很容易。但对于大型数据集,这可能会变得有点困难,因为必须为数据集中的每个键定义一个唯一的键。例如:在SharedReferences中存储用户登录的会话密钥

内部存储: 这有利于存储用户不需要访问的应用程序数据。可能适用于存储日志或应用程序将创建/更新/删除的任何内容

SQLite: 大量相同的结构化数据应该存储在SQLite数据库中,因为数据库是为此类数据设计的。由于数据是由数据库组织和管理的,所以可以使用查询语言(如SQL)对其进行查询,以获得符合特定条件的数据子集。在这里搜索变得很容易。虽然SQLite的扩展可能没有专用数据库那么大,但对于较小的应用程序(如Android应用程序)来说,它非常快速和方便。例如:存储listview项目或存储配方应用程序的配方


希望这有帮助

在您的情况下,您肯定应该使用SQLite

以下是在什么时间使用哪个存储选项的简要说明:

共享首选项: 这些基本上适用于存储应用程序首选项和其他少量数据。SharedReferences是一种键/值存储,您可以在其中以特定键保存数据。要从存储中读取数据,您必须知道数据的密钥。因此,读取数据变得很容易。但对于大型数据集,这可能会变得有点困难,因为必须为数据集中的每个键定义一个唯一的键。例如:在SharedReferences中存储用户登录的会话密钥

内部存储: 这有利于存储用户不需要访问的应用程序数据。可能适用于存储日志或应用程序将创建/更新/删除的任何内容

SQLite: 大量相同的结构化数据应该存储在SQLite数据库中,因为数据库是为此类数据设计的。由于数据是由数据库组织和管理的,所以可以使用查询语言(如SQL)对其进行查询,以获得符合特定条件的数据子集。在这里搜索变得很容易。虽然SQLite的扩展可能没有专用数据库那么大,但对于较小的应用程序(如Android应用程序)来说,它非常快速和方便。例如:存储listview项目或存储配方应用程序的配方


希望这有帮助

如果要永久存储,请使用共享首选项。另外一个选项是onSaveInstance()。它会在方向更改时调用方法并转到其他活动。在这两种情况下,您的活动都会被销毁。因此最好使用onSaveInstance()如果用户杀死应用程序并重新启动它会怎样?在这种情况下,活动的状态将被保留或不保留。请查看是否有一个应用程序在SaveInstance上运行(已打开)。但是,如果您关闭应用程序并重新启动,则应用程序将无法运行。最好使用其中一个(如上所述)请参阅此5。如果要永久存储,请使用共享首选项。还有一个选项是onSaveInstance()。它会在方向更改时调用方法并转到其他活动。在这两种情况下,您的活动都会被销毁。因此,最好使用onSaveInstance()如果用户杀死应用程序并重新启动它会怎样?在这种情况下,活动的状态将被保留或不保留。请查看是否有一个应用程序在SaveInstance上运行(已打开)。但是,如果您关闭应用程序并重新启动,则应用程序将无法运行。最好使用其中一个(如上所述)请看这5条。根据您的说法,在我的情况下,使用Sqlite数据库是最好的选择?不,请告诉我您需要多久更新数据库中的联系人ie,以及您一次访问多少内容才能显示在列表中。。。。。。。。。。。由于访问大量记录并显示在列表中会降低应用程序的速度,因此您可以将CursorAdapter与listview一起使用