android两个Activity跳转之间使用ProgressDialog方法

本文详细阐述了在Android应用中遇到的Activity跳转过程中使用ProgressDialog导致的直接跳转问题,通过引入Handler机制成功解决了这一问题,确保了用户体验和后台服务的正常运行。

有时候页面之间的跳转需要用一个ProgressDialog进度弹出框去提示用户等待,好让后台服务有足够的时间获取信息,这样子跳转到另外一个页面的之前就可以将后台服务获取的信息加载在页面上。想法上是挺好的,我最初的做法是在showdialog中使用进度提示框,部分代码如下:

case DIALOG2:
mpDialog = new ProgressDialog(this);  
mpDialog.setTitle("进度条");   //设置标题  
mpDialog.setMessage("正在处理请稍后..."); //设置body信息  
            mpDialog.setMax(100);  //进度条最大值是100  
            mpDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置进度条样式是横向的  
           return mpDialog; 

然后再button点击按钮监听事件里面加上下面的代码:

showDialog(DIALOG2); 

progressValue = 0;  

mpDialog.setProgress(0);  
progressHandler.sendEmptyMessage(0);  

Intent test=new Intent(WorkMainMenu.this,Test.class);
startActivity(test);

测试发现,点击了按钮之后,不会出现showDialog对话框,而是直接跳转进了页面。

后来认真查阅资料发现,activity是一个UI线程,运行于主线程中,android系统在启动的时候会为该activity创建一个消息队列和消息循环(Looper),handler的作用是把消息加入特定的的(Looper)中,并分发和处理消息队列中的消息。那么如何把一个线程加入到主线程的消息队列?那只有使用handler对象。

于是添加了并修改了代码:

case DIALOG2:
mpDialog = new ProgressDialog(this);  
mpDialog.setTitle("进度条");   //设置标题  
mpDialog.setMessage("正在处理请稍后..."); //设置body信息  
            mpDialog.setMax(100);  //进度条最大值是100  
            mpDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置进度条样式是横向的  
           return mpDialog; 


 progressHandler = new Handler(){  
            public void handleMessage(android.os.Message msg) {  

 if(progressValue == 100){

Intent test=new Intent(WorkMainMenu.this,Test.class);
startActivity(test);

mpDialog.dismiss(); }

else{

//设置进度条的值加1  
                    progressValue ++;  
                    mpDialog.incrementProgressBy(1);  
                    //如果进度条还没结束则100ms后进度条加1,循环调用每100ms就将进度条加1  
                    progressHandler.sendEmptyMessageDelayed(0, 100);  
}

};

按钮监听事件里面加上如下代码就行了:

showDialog(DIALOG2); 

progressValue = 0;  

mpDialog.setProgress(0);  
progressHandler.sendEmptyMessage(0);  

至此,两个Activity跳转之间使用ProgressDialog出现的问题就解决了,读者可以自行去网上仔细搜索UI线程、Looper、Handler的知识点。

有问题的话可以留言,大家一起共同探讨

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值