簡體   English   中英

當我從服務器獲取數據時,無法從Android端設置登錄注銷會話

[英]can not set login logout session from android side when i am fetch data from server

我正在ODOO基本應用程序上工作並將用戶詳細信息存儲到ODOO服務器,但無法從必須從android端進行管理的服務器登錄和注銷,因此我已經從android端使用了會話管理。首先我已成功登錄到我的應用程序登錄名但是當第二次登錄但詳細獲取第一個用戶時。如何使用android從服務器端注銷。

public class SharedPref {

    public SharedPreferences pref;
    public SharedPreferences.Editor editor;


    public SharedPref(Context context) {
        this.pref = context.getSharedPreferences("P1m2h3spellbound", Context.MODE_PRIVATE);

    }


    public void
    save(String key, String value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putString(key, value);
        editor.commit();
    }

    public void save(String key, Boolean value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    public void save(String key, int value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putInt(key, value);
        editor.commit();
    }

    public int load(String key, int def) {
        // TODO Auto-generated method stub
        int i = pref.getInt(key, def);
        return i;
    }

    public String load(String key, String def) {
        // TODO Auto-generated method stub
        String strSaved = pref.getString(key, def);
        return strSaved;
    }

    public Boolean load(String key, boolean def) {
        // TODO Auto-generated method stub
        boolean isbool = pref.getBoolean(key, def);
        return isbool;
    }

    public void logoutapp() {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        boolean isZoomGuide = load("isZoomGuide", false);
        String ip = load("server_ip", "");
        String port = load("server_port", "");
        String db = load("server_db", "");
        editor.clear();
        editor.commit();

        save("isZoomGuide", isZoomGuide);
        save("server_ip", ip);
        save("server_port", port);
        save("server_db", db);
        save("isServer", true);

    }
}

首先,如果您的類中有一個屬性為public SharedPreferences.Editor editor; 為什么要在每個save方法上創建不同的Editor 同樣,在logoutapp方法中,您可以使用編輯器。

我沒有得到您要使用此方法執行的操作,讓我們逐步進行

public void logoutapp() {
    // TODO Auto-generated method stub
    SharedPreferences.Editor editor = pref.edit();
    boolean isZoomGuide = load("isZoomGuide", false);
    String ip = load("server_ip", "");
    String port = load("server_port", "");
    String db = load("server_db", "");
    editor.clear();
    editor.commit();

    save("isZoomGuide", isZoomGuide);
    save("server_ip", ip);
    save("server_port", port);
    save("server_db", db);
    save("isServer", true);

}

首先,您要將一些存儲在SharedPreferences上的值加載並存儲到變量中。 然后您clear()我想您知道會從首選項中刪除所有值。 調用commit后,剩下的唯一首選項將是您在此編輯器中定義的首選項。

然后,我看到一個commit()但是我看不到您正在存儲它的結果,因此您只能使用apply() 然后保存以前存儲的值。

我不明白的是,您是否需要從SharedPreferences刪除所有數據? 我不這么認為,因為您再次存儲了相同的值。 您可以使用remove(String key)刪除存儲在SharedPreferences中的特定項目。

另外,我想看看您如何從應用程序注銷以及如何登錄到應用程序以消除我的疑慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM