如何调用方法在Andorid中使用非UI线程(不影响UI线程)

时间:2015-09-29 12:57:59

标签: java android multithreading

1.当我点击一个按钮时,我从Android ListView中显示的数据库中获取一些数据。

2.无论何时后台进程正在运行,它都无法正常工作。我搜索了我的代码它在主UI线程中运行,这就是为什么我的数据库数据没有被正确接收。

3.我想在UI线程之外运行此代码。(正常线程或异步任务)

4.请帮我说明如何做到这一点。

代码我想在非UI线程中运行:

private void output() 
{       
                            if(Popup__output.equals("All"))
                            {
                          //for delete a item in List view
                            helper.open();

                            new Handler().post(new Runnable() 
                            {

                                @Override
                                public void run()
                                {
                                    cur = helper.getCategory(Popup__output,Sharedemail);

                                    myCursorAdap = new Cursoradapterfor__page(Page1_Landing.this, cur);

                                    List.setAdapter(myCursorAdap);

                                     popupWindowvariable.dismiss();
                                }


                            });

                            }
}

1 个答案:

答案 0 :(得分:1)

为了更好,您可以使用android AsyncTask,您可以在doInBackground()方法中获取数据,并且UI工作如设置适配器和解除进度视图必须在UI线程上完成AsyncTask为您提供onPostExecute()方法,您可以在其中执行与UI相关的操作。

有关AsyncTask的详细信息。