Android提供了两种主要的异步操作方法:
第一种就是采用Thread执行内容,然后通过handler来获知线程结果以更新UI,但是这种方式对线程的安全性需要程序员来进行控制;
第二种是采用AsyncTask,这种方式是线程安全的,当然也意味着效率会比第一种稍低,不过还是可以接受的。
但是在TabActivity中用AsyncTask方法进行异步操作的时候,如果在超过两层的activity中使用了ProgressDialog,就会存在问题。这个大概是Android本身的bug,或者不叫bug,而是一种限制。对于这种情况,目前没有什么很好的正规解决方案,不过在大部分情况下可以采用如下workaround来解决。
01.
public
class
MyActivity
extends
Activity {
02.
03.
protected
void
onCreate(Bundle savedInstanceState) {
04.
05.
super
.onCreate(savedInstanceState);
06.
07.
08.
Context c;
09.
if
(getParent() !=
null
) c = getParent();
10.
else
c =
this
;
11.
AsyncClass async =
new
AsyncClass (c);
12.
async.execute();
13.
}
14.
15.
@Override
16.
protected
void
onResume() {
17.
18.
super
.onResume();
19.
}
20.
21.
class
AsyncClass
extends
AsyncTask {
22.
private
Context context;
23.
private
ProgressDialog progressDlg;
24.
25.
public
AsyncLoadData(Context c) {
26.
this
.context = c;
27.
}
28.
29.
@Override
30.
protected
String doInBackground(Void... params) {
31.
32.
fillData();
33.
return
null
;
34.
}
35.
36.
protected
void
onPostExecute(String result) {
37.
38.
progressDlg.cancel();
39.
}
40.
41.
protected
void
onPreExecute() {
42.
progressDlg =
new
ProgressDialog(context);
43.
progressDlg.setMessage(
"ing..."
);
44.
progressDlg.setCancelable(
false
);
45.
progressDlg.show();
46.
}
47.
}
48.
49.
}
主要思路很简单,就是由于是超过两层的Activity中会出问题,所以就使用父级的Context,这样就能workaround了。
分享到:
相关推荐
安卓切换卡使用的非常有用的代码,解释非常清楚,不难读懂,只需重写一个方法,完全可以当一个模板去用。
TabActivity使用实例
使用 TabActivity 实现滑动翻页(带动画)和标签置底
TabActivity 实现滑动翻页(动画)
实现了Tab控件,每个TabActivity用ListView实现
利用Fragment模拟Tabactivity功能。同时也实现了ELong主界面的底部栏的动画切换功能。
如何使用Fragment建立TabActivity
TabActivity 之间跳转 传值
NULL 博文链接:https://yangguangfu.iteye.com/blog/679001
看到还有些人在使用TabActvity,这个已经被Google废弃了的类,为了大家方便,写了一个能代替TabActivity的东西。说白了也就是对viewpager跟底部菜单进行了一个封装,标准的底部菜单自定义控件已经写好,如果有另外的...
在android3.0之后、google淘汰了之前使用tabactivity来实现标切换,转而使用fragment,使用v4包也能够实现向下兼容 使用FragmentTabHost实现tabActivity+tabHost
TabActivity尽管已经弃用,但是对于要求不那么高的App来说,也是完全可以用的。
我们的Activity不再继承于Activity而改之继承于tabActivity,并在布局文件中布局上述点击按钮之后的5个显示文字的TextView,布局文件与之前的布局文件并无变化
NULL 博文链接:https://griffinshi.iteye.com/blog/569312
NULL 博文链接:https://hao3100590.iteye.com/blog/974343
一个简单的Fragment + TabActivity实现标签内跳转demo, 本来要用ViewPager的,但是发现有些东西和自己原来想的不一样, 下个版本再实现吧。
主要介绍了Android应用中使用TabHost组件继承TabActivity的布局方法,文中分别介绍了以Activity和以布局文件进行布局的方式,需要的朋友可以参考下
TabActivity探索 TabActivity探索 TabActivity探索 TabActivity探索 TabActivity探索