频道栏目
首页 > 资讯 > Android > 正文

android多线程开发保持清晰顺序实践

15-05-14        来源:[db:作者]  
收藏   我要投稿

今天在开发的过程中需要给之前的程序加上多线程操作,避免networrk on mainthread。

由于代码很多,变量之间错综复杂,后面的变量需要在前面代码的线程中获取,线程的同步就非常关键

我知道的线程同步的方法主要是thread.join(),等待另一个线程的完成再继续进行本线程的工作。

不过在android中,mainThread控制着屏幕的刷新,如果调用在main thread中调用join将会导致屏幕无法刷新。

所以,我们可以通过专门新建一个线程,用这个线程来等待已有线程的结束,在已有线程结束后,在通过runOnUIThread方法通知屏幕刷新。

这是我们的耗时线程(模拟运行3秒):

 

thread1=new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		thread1.start();

 

 

这是通知线程:

 

new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					thread1.join();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}runOnUiThread(new Runnable() {
					public void run() {
					tv2.setText(Tread complete!);
					}
				});
			}
		}).start();

为了可以直观的看到效果,我们可以在之前timerThread源码的基础上添加这段代码,就可以看到,即使在thread1运行的时候,ui线程仍然可以更新。

 

 

 

相关TAG标签
上一篇:Java与C/C++网络通信时的数据转换
下一篇:Android 编程下两种方式注册广播的区别
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站