2012-04-18 56 views
0

好的,所以这是我的问题: 我正在制作一个应用程序,可以接收短信,并可以通过它们进行排序。这一切都可以正常工作,但是我必须让班级能够让手机振动,并在接收到短信时播放声音并点亮屏幕。您登录到系统,因此不同的用户将有不同的方式,他们希望应用程序通知收到短信时的方式。 我正在创建一个类,它在构造时从文件中读取3种通知方法的用户设置,可以为这些int保存新值,然后可以进行实际通知。为此,当构造对象时,它将用户名作为参数,然后从特定于他的文件读取和写入设置。 我的问题是:从文件中保存和检索这些整数的最佳方式是什么? 我知道SharedPreferences,它很容易使用,但我可以相信多少?如果我关闭了应用程序,请关闭手机,并重新开始一切,那里的信息还在吗? 我目前正在考虑制作一个带有3个public int字段的小类,它们实现了java.io.Serializable,然后将整个对象保存到一个文件中,因为当我需要它时,它很容易得到特定的整数(键/值,就像SharedPreferences一样),但是我认为这是一个非常缓慢的过程,并且由于应用程序会接收到很多消息(可能每分钟超过一次),因此必须从每个接收者的文件中读取数据才能让应用程序有点沉重,因为电池寿命也很重要。 这就是我的问题,我应该使自己的读/写文件系统,还是我可以相信SharedPreferences永不丢失任何数据?

我用sharedpreferences去了,它工作得很好,谢谢! =)

为了详细说明存储的整体性能,需要存储多少数据才能让sqlite数据库值得呢?因为所有这些短信都必须以某种方式存储,并且由于它一次可能会有数百个,对于使用sqlite数据库来说足够了吗?因为我读过某处使用数据库比io方式慢一点,直到你达到一定数量的数据?我希望数据库是值得的,因为它可能会让事情变得更容易。在android中的文件中写入/读取简单值的最佳方法?

回答

0

SharedPreferences应该为你正在做的工作完美地工作。除了密码外,我实现了将我需要的所有内容存储在首选项中永远不会失踪。

此外,SharedPreferences除非你希望这些设置保存在用户删除该应用程序后,也它适合你的目的写入文件以及SharedPreferences file

如果你坚持要写一个文件,最好的方法可能会写成xml或json。后者可能会快一些。然后在适当时加载这个文件。

尽管如此,你应该真的很难选择通过SharedPreferences写入文件。值得信赖!如果您不信任它,请相信我以及可能编写Android及其应用程序的其他人。

+0

我只是完成我想要的一切,我现在有一个sharedpreferences文件存储着用户登录,然后我有,让每个用户自己的sharedpreferences文件,在那里他可以存放在3个整数的类,它实际上作品很酷=) – Gnurgen 2012-04-18 21:27:08

1

SharedPreferences对于保存数据是安全的。这是存储数据的推荐方法之一,请参阅http://developer.android.com/guide/topics/data/data-storage.html

另一种方法也非常安全,即使用Sql表,您可以在其中拥有用户名和这些整数。作为一些值,这应该很容易实现。关于这个的更多信息在同一个链接中。

我看不出有任何理由要避免使用任何的这2种方法,去文件系统。他们以前使用过很多次,他们只是在工作。

+0

好吧,所以我假设在“SharedPreferences设置= getSharedPreferences(PREFS_NAME,0);” PREFS_NAME是存储它的文件。所以我可以让一个PREF_NAME只是一般的应用程序,我把用户的名字,他的登录信息等,然后我可以为每个隐藏个人设置的用户设置单独的PREFS_NAME。相当漂亮,我只需要确保我不会丢失任何数据,谢谢=) – Gnurgen 2012-04-18 20:10:40

+0

你可能会生成一个太复杂的设计。因为您有一个共享首选项来保持所有用户的登录信息可能是生成正确密钥的问题。使用可能最终会在钥匙的最后有一个共同的前缀和一个数字,直到你没有找到一个。从原来的问题,我没有得到存储用户名/登录的部分。考虑到所有这些,我认为使用2个SQL表是一个更好的选择。一个用于用户名+登录,另一个用于首选项。 – azertiti 2012-04-18 20:20:56

+0

课堂上,我提出可以很容易地跟踪它,因为在一般的首选项文件有永远只有一个用户,你登录的一个,类被创建时,它需要用户,并使得从/读取这个名字的文件+多一点,以确保它们不同。这也可以确保即使有人用普通的pref文件的确切名称登录,它仍然不会是同一个,他们不能是冲突=)但除此之外,是的,我宁愿使用大多数数据库,但是这很简单,并且工作=) – Gnurgen 2012-04-18 21:52:11

相关问题