如何为共享首选项的用户添加条件

时间:2018-08-30 15:08:06

标签: java android android-studio sharedpreferences

我正在研究一个测验应用程序,其中有许多测验,并且用户为每个测验获得的分数都存储在服务器中。有没有一种添加条件的方法,以便特定用户仅在第一次测验中获得的分数就被记录下来;如果该用户第二次或更多次出现相同的测验,则不会记录其分数。

以下是将分数发送到服务器的代码部分。

 private void sendScoreToServer(String subcategory, String username, String email, String score){
    Map<String, String> params = getParams(subcategory, username, email, score);
    GsonRequest<ScoreObject> serverRequest = new GsonRequest<ScoreObject>(
            Request.Method.POST,
            Constants.PATH_TO_ADD_SCORE,
            ScoreObject.class,
            params,
            createRequestSuccessListener(),
            createRequestErrorListener());

    ((CustomApplication)getApplication()).getNetworkCall().callToRemoteServer(serverRequest);
}

private Map<String, String> getParams(String subcategory, String username, String email, String score){
    Map<String, String> params = new HashMap<String,String>();
    params.put(Constants.SUBCATEGORY, subcategory);
    params.put(Constants.NAME, username);
    params.put(Constants.EMAIL, email);
    params.put(Constants.SCORE, score);
    return params;
}

private Response.Listener<ScoreObject> createRequestSuccessListener() {
    return new Response.Listener<ScoreObject>() {
        @Override
        public void onResponse(ScoreObject response) {
            try {
                if(response != null){
                    Log.d(TAG, "Response value " + response);
                } else{
                    displayErrorMessage(ResultActivity.this, "Quiz score failed to upload");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
}

private Response.ErrorListener createRequestErrorListener() {
    return new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    };
}
}

据我所知,可以通过两种方式来完成,要么使用共享首选项,要么将值添加到服务器。欢迎任何输入。

我是编码方面的新手,请耐心等待。

1 个答案:

答案 0 :(得分:0)

假设您希望他们能够重新参加测验但不再次存储分数-最简单,最安全的方法是在服务器上。当用户上传分数时,请检查并查看用户是否已经有该测验的分数。如果是这样,请不要保存新分数。