有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java最小化应用程序安卓

我编写了一个带有登录/注销逻辑的应用程序。 登录(设置用户并作为VAR传递)后,用户可以最小化应用程序

最小化代码:

Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);

当用户在第一个活动中单击应用程序图标时,我会检查是否已设置用户并作为VAR传递,如果是应用程序,请转至活动2(下一个活动)。 如果未设置,请转到登录界面

一切正常,但有时应用程序会忘记用户,并在最小化后通过,我会进入登录界面

就像清理缓存我不知道。。。救命


共 (2) 个答案

  1. # 1 楼答案

    在安卓系统中,你不能假设你的应用程序在进入后台时会被保存在内存中,也不能假设它停留在前台(人们可能会按Home键或弹出窗口)。您应该实现onPauseonResume事件,并将登录用户的详细信息存储在那里。当你的应用程序进入后台并被重新激活时,Android保证会分别调用这些方法。可以使用这些方法中获得的SavedBundle对象来存储数据。请在此处阅读有关应用程序生命周期的信息:http://developer.android.com/reference/android/app/Activity.html

  2. # 2 楼答案

    您应该使用sharedPreferance来存储登录用户和密码。 下面是代码

    private void storeUserPreferences(String key, String value) {
            SharedPreferences sharedPreferences = PreferenceManager
                    .getDefaultSharedPreferences(this);
            Editor editor = sharedPreferences.edit();
            editor.putString("username", "xyz");
                    editor.putString("pass", "123");
            editor.commit();
        }
    
    
    private void loadUserPreferences() {
                SharedPreferences sharedPreferences = PreferenceManager
                        .getDefaultSharedPreferences(this);
                 String pass =sharedPreferences.getString("pass","");
                 String username=sharedPreferences.getString("username","");
                 if(!TextUtils.isEmpty(pass)&&!TextUtils.isEmpty(username))
                 {
                    login.....success
                 }
                 else
                 {
                      redirect to login screen
                   }
    
    
    
            }
    

    这里是ref doc http://developer.android.com/reference/android/content/SharedPreferences.html