牛ちゃんのアンドロイドノート---登録情報を保存


「昨夜は西風が青々とした木を吹き、高層ビルに一人で登って、天涯の道を眺めた」
ログイン情報を保存する理由
アプリにはログイン機能があるので、1つのソフトウェアを使ってログインした後、短時間で再ログインしなくても(時間がかかりすぎるとログイン状態が失効して再ログインが必要になる)、一部のユーザー情報も保存されていることを知っていますが、これはどのように実現されていますか?SharedPreferencesを使用して自動ログインを実現する論理を撫でてみましょう.
インプリメンテーションロジック
1、まずUserクラス(一般的にはnewのUser定数もあります)を構築する必要があります.このクラスは後で使用します.USerクラスはaccess-token(これはネットワークリクエストを開始する際に使用する)などの重要な情報を保存します.これは簡単です.言うまでもありません.
2,Userクラスができてから,ログイン要求を開始すると,ログインが成功すると,まずUser定数を処理し,JSONデータを解析して必要なデータ(例えばname,id,access-tokenなど)を格納し,その後User定数をStringに変換し,SharedPreferencessを用いてこのuserInfoを保存する.コードは次のとおりです.
//ConstantData.user   user  ,  GSON         
String userInfo;
userInfo= new Gson().toJson(ConstantData.user);

//    SharedPreferences       
//  SharedPreferences  
SharedPreferences sharedPre=context.getSharedPreferences("loginInfo", context.MODE_PRIVATE);
//  Editor  
SharedPreferences.Editor editor=sharedPre.edit();
//    
editor.putString("userInfo", userInfo);
//  
editor.commit();

3、上の2つのステップを経て、あなたがすでに1人のユーザーを持っていてログインに成功したことを説明します(ログインに成功したことに注意して、つまりバックエンドのログインインタフェースが成功した情報を返して、一般的にcode=200です)、ソフトウェアはすでにあなたのこのユーザーの情報があって、もしあなたがこの時に戻るボタンを押して携帯電話のメニューあるいはソフトウェアに戻ってその他の原因でオフにされたら、次はどのようにしてログインしたか、ログイン状態が使用できないと判断しますか?第四歩に出る.
4、3つの状況を考慮します.
a,このソフトウェアを初めて使用し,ログインページbにジャンプし,既にログインしていたが,ホームページcにジャンプし,tokenが期限切れになり,ログインページにジャンプして再ログインした(ネットワークリクエストを開始するとサーバがtokenの期限切れの注意を返すことが多いが,この場合はActivityで処理する必要があり,すべてのActivityページを閉じてログインページにジャンプすることも簡単である).
状況aとbがどのように処理されているかを重点的に見てみましょう.一般的には、起動ページで前にログインするかどうかを判断し、コードに直接アクセスします.
ページを起動するにも処理しなければならないことがたくさんあります.その後も専門的に勉強しなければなりません.
SharedPreferences sharedPre=getSharedPreferences("loginInfo", MODE_PRIVATE);
String userstr = sharedPre.getString("userInfo", "");

if(!StringUtils.isEmpty(userstr) ){
  //StringUtils      ,   ,      
  Gson gson = new GsonBuilder().serializeNulls().create();
  Type type = new TypeToken<User>() { }.getType();
  ConstantData.user = gson.fromJson(userstr, type);
  to =1;
}else{
  to=0;
}

//toは変数です.デフォルト値がゼロで、ログインページにジャンプし、値が1でAPPのホームページにジャンプすると仮定します.ページを起動してジャンプするときに、この値に基づいて対応するページにジャンプできます.
public class StringUtils {

    /**
     *          
     * @return
     */
    public static boolean isEmpty(String str){
        if(str == null || str.equals("null")|| str.length() == 0){
            return true;
        }else {
            return false;
        }
    }
}

まとめ
弟は初めてブログを书きます.菜鸟としてはまだ足りないところがたくさんあります.もし皆さんがコードに问题があるか、もっと良い実现の考え方があると思ったら、指正と交流を歓迎します.技术を学ぶ道は长くて远いです.ブログを书くのも覚えたいことです.忘れた时に読んでください.牛の最初のブログはこのように诞生しました.最后に第1行の引用の意味を言って、これは3种类の境界の第1种を学ぶので、兴味があるのは王国维先生が提出した治学の3种类の境界を理解することができて、私はここでただ引用して、顽张って、共に努力します!