Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务无法正常工作_Android_Android Intent_Android Asynctask_Android Progressbar - Fatal编程技术网

Android 异步任务无法正常工作

Android 异步任务无法正常工作,android,android-intent,android-asynctask,android-progressbar,Android,Android Intent,Android Asynctask,Android Progressbar,当用户按下按钮“b”时,我使用异步任务发送邮件,但它显示一个错误,错误是“执行doInBackground时出错”,“第一个活动泄漏了一个窗口”” 公共类FirstActivity扩展活动实现OnClickListener { 按钮b; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b=(按钮)findV

当用户按下按钮“b”时,我使用异步任务发送邮件,但它显示一个错误,错误是“
执行doInBackground时出错”
,“
第一个活动泄漏了一个窗口”

公共类FirstActivity扩展活动实现OnClickListener
{
按钮b;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(按钮)findViewById(R.id.Button);
b、 setOnClickListener(此);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
@凌驾
公共void onClick(视图v){
ProgressDialog进度=新建ProgressDialog(此);
progress.setMessage(“加载…”);
新建MyTask(progress.execute();
意图i=新意图(这个,newclass.class);
星触觉(i);
}
//TODO自动生成的方法存根
公共类MyTask扩展了AsyncTask{
私人进展对话进展;
公共MyTask(进度对话框进度)
{
这个。进步=进步;
}
公共无效onPreExecute()
{
super.onPreExecute();
progress.show();
}
公共作废doInBackground(作废…未使用)
{
String detail=“发送邮件”;
新活动(详情);
返回null;
}
公共void onPostExecute(void unused)
{
进步。解散();
}
}
}

错误是因为您在启动“进度”对话框后立即启动了新活动(该对话框失去了上下文)。 您需要将其移动到onPostExecute()


您正试图导航到新的
活动
main活动
,而
ProgressDialog
仍处于打开状态。这是导致内存泄漏的原因。

请尝试在doInBackground中使用此方法

    public Void doInBackground(Void... unused)
      {
                   runOnUiThread(new Runnable()
            {

                public void run() 
                                    {
                    // TODO Auto-generated method stub

          String detail="sending mmail";
          new MainActivity(detail);
        return null;
                }
            });

      }

您是否收到错误添加logcat输出抱歉,我无法在此处发布logcat。但是错误与我之前提到的一样,兄弟。但问题是,在进入下一页之前,进度只显示了一小部分。点击“提交”按钮后,应立即开始进度。已使用它bro。但问题是,在进入下一页之前,进度只显示了一小部分。点击提交按钮后应立即开始进度。是的,我知道这一点。。在谷歌搜索了我的错误后,我知道你在说什么,但我无法删除这些错误。如果您可以对代码进行更改,然后发布代码,那么它将是FineNavNeet,为什么不在MainActivity中添加ProgressDialog并将其从FirstActivity中删除,这样就不会出现内存泄漏。
public void onPostExecute(Void unused){
    progress.dismiss();
    Intent i = new Intent(this,newclass.class);
    startActivity(i);
}
    public Void doInBackground(Void... unused)
      {
                   runOnUiThread(new Runnable()
            {

                public void run() 
                                    {
                    // TODO Auto-generated method stub

          String detail="sending mmail";
          new MainActivity(detail);
        return null;
                }
            });

      }