如何在android中为每个选项卡使用线程?

时间:2011-07-08 16:11:24

标签: android multithreading

我正在开发一个有四个标签的应用程序。在每个选项卡中,我实现了每个单独的功能。我想为每个选项卡实现线程,以使程序更有效。任何人都可以建议在选项卡式活动中实现线程的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以通过扩展AsyncTask类使用java Thread类或doInBackground方法来运行正在运行的函数。

参考:http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

我没有看到让每个标签在自己的线程中运行的优势。在Android中进行线程化的好处是在后台执行耗时的工作,这会阻止UI锁定。每个标签的作用是什么?

您可以让线程在每个选项卡式Activity中执行后台工作,但如果您计划更新UI,则必须在“主要”或UI线程中完成。

答案 2 :(得分:0)

在Android文档上有一篇很棒的文章,关于“painless threading”你可能想从那里尝试一下。我建议不要为每个选项卡采用一种方法,而是尝试在后台保留可能会阻止UI线程的任务(如下载或解析)。

这是一个可能对你有帮助的小剪辑

@Override
        public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        this.adapter = new PersonAdapter(this, R.layout.main_item, new ArrayList<Person>());
        setListAdapter(this.adapter);

        ListView listView=(ListView)findViewById(R.id.section);

        sectionAdapter=new SectionAdapter(this,R.layout.section_item,sections);
        listView.setAdapter(sectionAdapter);

        //execute the filling section task in background 


        progressDialog = ProgressDialog.show(MainFeedActivity.this,    
                "Please wait...", "Retrieving data ...", true);

       new SectionTask().execute();
       new FeedTask().execute();



    }


private class SectionTask extends AsyncTask<Void, Void, Void>{


            @Override
            protected Void doInBackground(Void... arg0) {
//ProcessInformation Here Background Thread you can do downloading and parsing
                        }
            @Override
            public void onPostExecute(Void result){    
//Update your UI here [UI Thread]       
            } 

虽然有AsyncTask limit

但要小心