当 Android 应用被杀死时如何保持 SharedPreferences 值 [英] How To Keep SharedPreferences Values When Android App Killed

查看:126
本文介绍了当 Android 应用被杀死时如何保持 SharedPreferences 值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做一个安卓项目.我想在 android 应用程序终止时推送通知.所以,我正在创建 BroadcastReceiver 和 Service 类.他们在工作.但是,我有一个问题.

I am working an android project. I want to push notification when android app killed. So, I am creating BroadcastReceiver and Service class. They are working. But, I have a problem.

这个问题是,当用户登录我的应用程序时;我用 SharedPreferences 强调这个值.但是,当我杀死应用程序时,这个 SharedPreferences 取空"值.

This problem is, when user login my app; I stroge this values with SharedPreferences. But, when I killed app, this SharedPreferences take "null" value.

java.lang.NullPointerException:尝试调用接口方法'java.lang.Stringandroid.content.SharedPreferences.getString(java.lang.String,java.lang.String)' 在一个空对象引用上

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference

当我搜索时,人们说:editor.clear();"但它不起作用.我能做什么?

When I search, people said: "editor.clear();" but it doesn't work. What can I do?

我的登录类:

public static SharedPreferences UserDetailsSP,

UserDetailsSP = getSharedPreferences("UserDetails", MODE_PRIVATE);
SharedPreferences.Editor UserDetailsPreferencessEdit = UserDetailsSP .edit();
UserDetailsPreferencessEdit.clear();
UserDetailsPreferencessEdit.putString("UserName", A);
UserDetailsPreferencessEdit.commit();

我用这个调用其他java类:

I call other java class with this:

String a1 = Login.UserDetailsSP.getString("UserName","A");

推荐答案

您可以像这样创建共享首选项类:-

you can create a shared preference class like this:-

    public class AppPrefrences {

            private static SharedPreferences mPrefs;
            private static SharedPreferences.Editor mPrefsEditor;

            public static boolean isUserLoggedOut(Context ctx) {
                mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
                return mPrefs.getBoolean("id_logged_in", true);
            }

            public static void setUserLoggedOut(Context ctx, Boolean value) {
                mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
                mPrefsEditor = mPrefs.edit();
                mPrefsEditor.putBoolean("id_logged_in", value);
                mPrefsEditor.commit();
            }

    public static String getUserName(Context ctx) {
            mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
            return mPrefs.getString("userName", "");
        }

        public static void setUserName(Context ctx, String value) {
            mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
            mPrefsEditor = mPrefs.edit();
            mPrefsEditor.putString("userName", value);
            mPrefsEditor.commit();
        }

public static void clearAllPreferences(Context ctx) {
        mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        mPrefsEditor = mPrefs.edit();
        mPrefsEditor.clear();
        mPrefsEditor.commit();
    }
        }

当您登录应用程序时,请设置如下值:-

and when you login in your app then set the value like this:-

setUserLoggedOut(YourActivity.class, false);

并像这样在启动画面上设置检查:-

and set a check on splash screen like this:-

if (isUserLoggedOut(StartActivity.this)) {
                    startActivity(new Intent(StartActivity.this, LoginActivity.class));
                    finish();
                } else {
                    startActivity(new Intent(StartActivity.this, MainActivity.class));
                    finish();
                }

这篇关于当 Android 应用被杀死时如何保持 SharedPreferences 值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆