在Android中保存和读取数据的最佳方法

时间:2013-05-30 09:34:25

标签: android database save sharedpreferences android-sqlite

我有一个使用代理浏览网址连接的应用。但我使用的代理主机,端口,用户名和密码都使用硬编码。我已经做到了。但现在我想用一个引用数据的对象替换该硬编码。因此用户可以输入他们想要的代理,并可以使用他们的用户名和密码。这就是我的流程。

enter image description here

因此,第一个用户可以输入他们想要的连接,主机,端口等的名称。然后“拯救”它。然后在下一个活动中,它将读取该连接的数据,如果存在,用户只需单击并浏览即可。如果不这样做,他们可以创建连接。如果想要创建它(它将返回创建连接表单)。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果您只想将数据发送到下一个活动,则可以使用intent.putExtra();并在下一个活动中调用getIntent().getStringExtras();

如果您希望保存数据,直到用户下次可以使用SharedPrefrance进行更改,因为您拥有少量数据。

如果您的数据是敏感的(想要提供更多安全性),您可以放入数据库或加密并放入数据库

当您处理用户的用户名和密码时,您应该使用sqlite数据库。否则SharedPrefrance是最好的。

这是我的预备班:

public class GreetingCardData {
    public static final String SHARED_PREF_FILE     =   "greetingCardData";
    public static final String KEY_DO_NOT_SHOW      =   "doNotShow";
    public static final String KEY_CATEGORIES_JSON  =   "categoriesJson";   
    private SharedPreferences sharedPrefs;
    private Editor prefsEditor;

    public GreetingCardData(Context context) {
        this.sharedPrefs = context.getSharedPreferences(SHARED_PREF_FILE, 0);
        this.prefsEditor = sharedPrefs.edit();
    }   

    public void setDoNotShowFlag ( boolean flag ){
        prefsEditor.putBoolean( KEY_DO_NOT_SHOW, flag );
        prefsEditor.commit();
    }

    public boolean getDoNotShowFlag(){
        return sharedPrefs.getBoolean( KEY_DO_NOT_SHOW, false );
    }

    public void setGreetingcardJson( String jsonString ){
        prefsEditor.putString( KEY_CATEGORIES_JSON, jsonString );
        prefsEditor.commit();
    }

    public String getGreetingcardJsonString(){
        return sharedPrefs.getString(KEY_CATEGORIES_JSON, "");
    }    
}

来自活动的电话: 保存数据:

new  GreetingCardData(ActivityMain.this).setDoNotShowFlag(flag);

获取数据:

boolean flag =  new  GreetingCardData(ActivityMain.this).getDoNotShowFlag();