重载主线程

时间:2013-05-24 10:19:54

标签: android multithreading

在我的应用程序的一个活动中,我动态地创建了一堆编辑文本字段,然后使用sharedpreferences中的一些文本设置它们。我意识到这对主线程来说有点多处理,这就是为什么在加载时应用程序有一些滞后的原因。我对线程的概念很陌生,所以我想知道最好的方法是将字符串从sharedpreferences加载到另一个线程,然后在此期间只显示一个加载栏(或类似的)(在主线程中我猜测)。请详细解释,因为线程对我来说是新的。

此外,如果有任何教程指向我正确的方向,他们也会有用。提前致谢。

3 个答案:

答案 0 :(得分:1)

虽然只有主线程可以对UI进行更改,但是AsyncTask类可以让你在另一个线程上完成所有其他工作,然后在准备放入主线程时将其推送到主线程用户界面。

答案 1 :(得分:1)

AsyncTask是您所需要的。 创建一个扩展AsyncTask的类 在doInBackground中做你繁重的工作() 例如:

 Class Example extends AsyncTask{
    @Override 
    protected void doInBackground(Object... args){
        //do ur stuff
    }
    @Override 
    protected void onPostExecute(Object arg){
        //do what you wanna do after doInBackground
    }
 } 

通过新的例子()调用你的任务.execute();

答案 2 :(得分:0)

你可以这样:只是为了指导你

final ProgressDialog pd = ProgressDialog.show(context, "Title", "Loading");
                            new Thread(new Runnable()
                                {

                                    @Override
                                    public void run()
                                        {
                                            //get data from shared preferences 

                                            runOnUiThread(new Runnable()
                                                {

                                                    @Override
                                                    public void run()
                                                        {
                                                            pd.dismiss();
                                                            //set that text to your dynamic textview

                                                        }
                                                });

                                        }
                                }).start();