我正在使用此代码从mySql数据库中提取ID。连接字符串完美运行。在转到代码中提到的intent活动(FinalActivity.class)之前,应用程序突然转到主类(MainActivity.class)几秒钟。 LogCat还提到了一个"泄露的窗口"在代码中。
class GetID extends AsyncTask<String, String, String> {
boolean failure = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog2 = new ProgressDialog(DashboardActivity.this);
pDialog2.setMessage("Attempting...");
pDialog2.setIndeterminate(false);
pDialog2.setCancelable(true);
pDialog2.show();
}
@Override
protected String doInBackground(String... args) {
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("SerialToRefer", Serial1));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(
LOGIN_URL2, "POST", params);
Log.d("Login attempt", json.toString());
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
GetID = json.getString(TAG_MESSAGE);
Log.d("Login Successful!", GetID);
Intent intent = new Intent(DashboardActivity.this, FinalActivity.class);
intent.putExtra("Serial1", Serial1);
intent.putExtra("GetID", GetID);
startActivity(intent);
return "Please wait...";
}
else{
Log.d("Login Failure!", json.getString(TAG_MESSAGE));
return json.getString(TAG_MESSAGE);
}
} catch (JSONException e) {
e.printStackTrace();
}
finally{}
pDialog.dismiss();
pDialog = null;
return null;
}
protected void onPostExecute(String file_url) {
try {
pDialog2.dismiss();
pDialog2 = null;
} catch (Exception e) {
}
if (file_url != null){
Toast.makeText(DashboardActivity.this, file_url, Toast.LENGTH_LONG).show();
}
finish();
}
}
答案 0 :(得分:0)
inBackground是否在AsyncTask上运行。因此,当OS安排它时,它将在未来的某个时刻运行。在调度该线程之前,它不会启动FinalActivity。所以,是的,此线程正在运行的活动将首先出现。
这甚至没有提到这个线程发出HTTP请求的事实,这将需要几秒钟。所以你无论如何都不能直接进入FinalActivity。
答案 1 :(得分:0)
对我来说很好看。我想知道问题是否在清单中。你复制了吗?粘贴FinalActivity的条目?