我是Android开发的新手。关于使上述库最佳运行的最佳方法有几个问题。
目前,我的应用中有三项活动。 MainActivity,LoginActivity和HomeActivity。应用程序启动MainActivity,用于检查此人是否已登录。如果此人已登录,则重定向到Home,否则重定向到Login。
如documentation中所述,我创建了一个RestClient类。我可以在LoginActivity中成功发出请求并获得响应。这是我的登录代码。
public void login() {
RequestParams params = new RequestParams();
params.put(AUTH_PARAMETER_EMAIL, mEmail);
params.put(AUTH_PARAMETER_PASSWORD, mPassword);
RestClient.setCookieStore(new PersistentCookieStore(this));
RestClient.post(AUTH_URL, params, new JsonHttpResponseHandler() {
@Override
public void onFinish() {
showProgress(false);
}
@Override
public void onSuccess(JSONObject response) {
String response_status = null;
try {
response_status = response.getString(AUTH_RESPONSE_STATUS);
} catch (JSONException e) {
Toast.makeText(LoginActivity.this,
"ERROR: " + e.toString(), Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
if (response_status.equals(AUTH_SUCCESS_STATUS)) {
finish();
} else {
mPasswordView
.setError(getString(R.string.error_incorrect_password));
mPasswordView.requestFocus();
}
}
@Override
public void onFailure(Throwable e, String content) {
Toast.makeText(LoginActivity.this, "ERROR: " + e.toString(),
Toast.LENGTH_LONG).show();
Log.e(TAG, e.toString());
}
});
}
问题
答案 0 :(得分:5)
所以这就是我到目前为止所做的。它有效,但我不确定这是否是最佳做法。
1)cookie存储从共享首选项初始化。所以每次需要时都要创建一个新的。一定要每次都使用相同的上下文。我正在使用getApplicationContext()
2)和4)饼干商店为您提供所有服务。只需使用与之前创建的相同的上下文创建一个新的。只要您保持一致,cookie就会正确初始化。
3)cookie存储保持共享首选项及其本地属性同步,因此只需调用(new PersistentCookieStore(getApplicationContext())).clear();
我的代码
RestClient.java
public static void setCookieStore(PersistentCookieStore cookieStore) {
client.setCookieStore(cookieStore);
}
LoginActivity.java
RestClient.setCookieStore(new PersistentCookieStore(getApplicationContext()));
MainActivity.java
private void loginRouter() {
PersistentCookieStore mCookieStore = new PersistentCookieStore(
getApplicationContext());
List<Cookie> cookies = mCookieStore.getCookies();
for (Cookie c : cookies) {
if (c.getName().equals("session")) {
startActivity(new Intent(this, HomeActivity.class));
finish();
}
}
launchSplashPage();
}