android – MainActivity已泄露窗口

android – MainActivity已泄露窗口,第1张

概述我是 Android新手,我在7天前就开始了.我遇到了这种类型的错误,并且在同一个论坛中引用了大部分主题,询问了类似的问题,但没有得到如何解决. 这是我的代码: class CreateNewCustomer extends AsyncTask<String, String, String> { @Override protected void onPreExecute( 我是 Android新手,我在7天前就开始了.我遇到了这种类型的错误,并且在同一个论坛中引用了大部分主题,询问了类似的问题,但没有得到如何解决.

这是我的代码:

class CreateNewCustomer extends AsyncTask<String,String,String> {      @OverrIDe      protected voID onPreExecute() {              super.onPreExecute();              pDialog = new ProgressDialog(MainActivity4.this);              pDialog.setMessage("Creating Customer..");              pDialog.setIndeterminate(false);              pDialog.setCancelable(true);              pDialog.show();      }      @OverrIDe      protected String doInBackground(String...args) {              String fname = inputFname.getText().toString();              String lname = inputLname.getText().toString();              String phone = inputPhone.getText().toString();              List<nameValuePair> params = new ArrayList<nameValuePair>();              params.add(new BasicnameValuePair("fname",fname));              params.add(new BasicnameValuePair("lname",lname));              params.add(new BasicnameValuePair("phone",phone));              JsONObject Json = JsonParser.makehttpRequest(url_create_customer,"POST",params);              Log.d("Create Response",Json.toString());              try {                      int success = Json.getInt(TAG_SUCCESS);                      if (success == 1) {                              Intent i = new Intent(getApplicationContext(),MainActivity5.class );                              startActivity(i);                              finish();                      } else {                              // This is the Else part                      }              } catch (JsONException e) {                      e.printstacktrace();              }              return null;      }      @OverrIDe      protected voID onPostExecute(String file_url) {              pDialog.dismiss();      }}
解决方法 在这部分:

if (success == 1) {    Intent i = new Intent(getApplicationContext(),MainActivity5.class );    startActivity(i);    finish();}

在调用finish()之前,您需要关闭进度对话框.它没有被解雇,因此窗口泄露并导致异常.

请改用此代码:

if (success == 1) {    Intent i = new Intent(getApplicationContext(),MainActivity5.class );    startActivity(i);    pDialog.dismiss();    finish();}

另外,从onPostExecute()开始新活动,而不是doInBackground().使用标志检查事件是否成功,并在onPostExecute()中启动一个新活动,如下所示:

@OverrIDeprotected String doInBackground(String...args) {    //...    if (success == 1) {        successFlag=true;    }    //...}@OverrIDeprotected voID onPostExecute(String file_url) {    if(successFlag=true) {        Intent i = new Intent(getApplicationContext(),MainActivity5.class );        startActivity(i);        pDialog.dismiss();        finish();    }}
总结

以上是内存溢出为你收集整理的android – MainActivity已泄露窗口全部内容,希望文章能够帮你解决android – MainActivity已泄露窗口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1127220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存