我使用共享首选项来保存整个应用程序数据而不是DataBase,可以吗?

时间:2015-09-28 09:08:07

标签: android database sharedpreferences

我正在开发一个应用程序,帮助人们保存有关其工作日的信息。

用户输入每个工作日的开始日期和结束日期,应用程序计算他本月工作的工资和工时。

我没有在DataBase中保存此信息,而是将信息保存在Shared-Preferences中。例如,我以这种方式保存他的工资(工资是EditText):

SharedPreferences.Editor editor;
editor = sharedPreferences3.edit();
editor.putString("Wage", wage.getText().toString());
editor.commit();

我很确定在Shared-Preferences中保存像工资一样的数字真的很棒。但是为了保存每个工作日的输入和退出日期,我应该使用DataBase。但是我使用了Shared-Preferences

工作日由@分隔,例如,一串工作日就像 -

09/27/2015 13:02 - 09/27/2015 20:02 @ 10/27/2015 10:15 - 10/27/2015 16:15.

使用char @,我可以提取信息并随心所欲地做任何事情。

我想问的是 - 使用Shared-Preferences代替DataBase,还好吗?

3 个答案:

答案 0 :(得分:0)

如果您需要存储不同的偏好和偏好的数据,我的意思是固定数量的不同值可以改变其价值,但不会增长超过预期。

您正在以不符合预期的方式使用偏好设置。我不能告诉你这样做的缺点或者你会因此而遇到什么问题。

我建议您使用内部SQLite,或者......您可以使用简单的本地文件并序列化包含要保存的数据的类。

两种选择都比使用偏好更好。

希望这有帮助。

答案 1 :(得分:0)

这实际上取决于您要存储的数据。

**SharedPreferences**

大量相同的结构化数据应该存储在SQLite数据库中,因为数据库是为这种数据设计的。由于数据是由数据库构建和管理的,因此可以查询使用SQL等查询语言获取与某些条件匹配的数据子集。这使得可以搜索数据。当然,管理和搜索大量数据会影响性能,因此从数据库读取数据可能比从SharedPreferences读取数据要慢。

Intent myIntent = new Intent(WearRunActivity.this, ResultsActivity.class);
    myIntent.putExtra("distance", distance);
    myIntent.putExtra("time", chronometer.getText());
    myIntent.putExtra("pace", pace);
    myIntent.putExtra("speed", speedAc);
    myIntent.putExtra("lSteps", leftSteps);
    myIntent.putExtra("rSteps", rightSteps);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    //WearRunActivity.this.startActivityIfNeeded(myIntent, 1);


    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.card_icon)
                    .setContentTitle("REPORT")
                    .setContentText(chronometer.getText())
                    .setLargeIcon(BitmapFactory.decodeResource(
                            getResources(), R.drawable.card_icon))
                    .setAutoCancel(true)
                    .setContentIntent(pendingIntent);

    notification_manager = NotificationManagerCompat.from(this);

    notification_manager.notify(1, notificationBuilder.build());

SharedPreferences是一个键/值存储,您可以在其中保存特定键下的数据。要从商店读取数据,您必须知道数据的密钥。这使得读取数据非常容易。但是,尽管存储和读取大量结构化数据很困难,因为您需要为每个数据定义关键字,但是除了您有一定的概念之外,您无法真正搜索数据。命名键。

答案 2 :(得分:0)

长话短说:

1-如果数据很大,您可以将用户输入/数据存储到本地数据库中。

2-如果您的数据相对较小,您可以使用共享首选项来存储数据。