我正在开发一个有四个标签的应用程序。在每个选项卡中,我实现了每个单独的功能。我想为每个选项卡实现线程,以使程序更有效。任何人都可以建议在选项卡式活动中实现线程的方法吗?
答案 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]
}
但要小心