应用程序在意图活动之前不必要地转移到主要活动

时间:2014-08-06 18:13:45

标签: java android mysql

我正在使用此代码从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();
            }

        }

2 个答案:

答案 0 :(得分:0)

inBackground是否在AsyncTask上运行。因此,当OS安排它时,它将在未来的某个时刻运行。在调度该线程之前,它不会启动FinalActivity。所以,是的,此线程正在运行的活动将首先出现。

这甚至没有提到这个线程发出HTTP请求的事实,这将需要几秒钟。所以你无论如何都不能直接进入FinalActivity。

答案 1 :(得分:0)

对我来说很好看。我想知道问题是否在清单中。你复制了吗?粘贴FinalActivity的条目?