Android-java android 线程异步问题

发布于 2017-04-16 04:22:08 字数 203 浏览 1339 评论 4

请问各位高手们,线程的异步问题如何处理呢?
如下问题:
我想通过网络获取数据,但android4.0以上的系统不能在onCreate()中执行网络获取,只能新建线程获取。但执行A线程获取网络数据还没有完成,oncreate()就已经执行了下面的数据操作了,值都还没有获取到。

上面的问题需要如何解决呢?不知道各位是如何设计多线程的交互呢? 有什么技巧吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

虐人心 2017-10-20 18:03:02

多线程实现方法有多种,可以继承Thread 、完成Runable接口,安卓也有一个自带的类AsyncTask来完成。因为网络操作是一种相对耗时的操作,所以为了不阻塞UI线程,所以需要线程异步来实现。用Thread实现可以将其他的操作都放到Handler里面来执行,AsyncTask的doPostExceute里面执行,就能保证是在数据获取到以后才执行后面的操作了!

夜无邪 2017-10-13 01:39:34

线程的目的就是异步,先加载基本UI,得到线程执行结果,再更新UI。
如果你需要线程中的一个值做运算,那运算的部分,应该也在线程中执行才对。

浮生未歇 2017-09-23 18:55:59

1、最好不要阻塞UI线程。
2、如果在异步加载完之前不想做其他处理,可以UI使用一个进度条来显示进度。异步加载完成后通过UI线程的handler来启动后续的处理。

浮生未歇 2017-05-31 15:52:11

这是一个 常见的问题, android 文档里 写的很清楚:
http://developer.android.com/guide/components/processes-and-threads.html

两个原则:
1) Do not block the UI thread
2) Do not access the Android UI toolkit from outside the UI thread

不要阻塞UI线程, 不要在非UI线程里去操作UI.
两个方法:
1) 用
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
等. 这些Runnable会放在UI线程里执行.

2) AsyncTask
你定义类继承AsyncTask, 覆写doInBackground(), onPostExecute()等方法. doInBackground()在后台线程做. doInBackground()执行完成后, 用返回结果调用onPostExecute()放在UI线程里执行.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文