我是android开发的新手。我的应用程序中有一个 AsyncTask 函数。从所有活动中调用 http 请求。现在,在每个活动中,我都使用以下类连接到服务器,在某些活动中,我什至调用了两次!!。
基本上我是一名网络开发人员,在这种情况下,我们使用一个可以从整个应用程序(网络)访问的类,并使用通用函数来执行相同的活动。唯一的区别是输入和输出将被更改。
我的疑问是在这种情况下我可以使用(转换)这个到这样的函数或类吗?我的假设是
- 创建一个 android 类(可以从所有活动中访问)
- 只需使用特定服务器制作我们需要的 JSON 字符串(用于服务器中的进程)
- 只需将创建的 json 传递给创建的类,然后进行 http 连接)
- 处理服务器返回的数据
- 将其传递给相应的活动
这样我就可以对所有活动使用相同的功能,并且可以避免重复查询
我可以将此代码转换为这种方式吗?
我的代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_main);
LogIN loginUser = new LogIN();
LoginUser.execute("");
}
private class LogIN extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... sUrl) {
try {
String path = "http://www.domain_name.com/app/checkSession.php";
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000);
HttpResponse response;
JSONObject json = new JSONObject();
try {
HttpPost post = new HttpPost(path);
json.put("access_token", "123456");
post.setHeader("json", json.toString());
StringEntity se = new StringEntity(json.toString());
se.setContentEncoding((Header) new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/* Checking response */
if (response != null) {
InputStream in = response.getEntity().getContent();
String a = convertStreamToString(in);
JSONObject jsono = stringToJsonobj(a);
String passedStringValue = jsono.getString("result");
if(passedStringValue.equals("1")){
flags=1;
//Log.v("TAGG", "Success");
}
else {
flags=0;
//Log.v("TAGG", "Failed !");
}
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialogue("Login Processing", "Loading");
}
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
}
@Override
protected void onPostExecute(String result) {
if(flags.equals(1)){
Itent homepage = new Intent(MainActivity.this, RegisterDevice.class);
startActivity(homepage);
finish();
}
else {
Intent homepage = new Intent(MainActivity.this, LoginActivity.class);
startActivity(homepage);
finish();
}
super.onPostExecute(result);
}
}
}
请任何人帮助/建议提前谢谢