首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AsycTask更新UIElement

从AsycTask更新UIElement
EN

Stack Overflow用户
提问于 2012-07-03 00:01:48
回答 3查看 86关注 0票数 0

我想更新文本视图,从AsycTask.Actually微调我正在做什么

我从服务器获取数据并返回json格式的结果,然后解析JSON并将数据填充到两个旋转器和一个textview.How中。当我使用Asyctask信标时,我可以更新数据吗Textview没有update..Here是我的代码片段

代码语言:javascript
复制
TAG_CONFIG = "xyz"
TAG_CONFIG1 = "yyy"
JSONParser jParser = null;
JSONObject json = null;
jParser = new JSONParser();
json = jParser.getJSONFromUrl(url);

try {
    // Getting Array of Contacts
    contacts = json.getJSONArray(TAG_CONFIG);
    for (int i = 0; i < contacts.length(); i++) {
        JSONArray c = contacts.getJSONArray(i);
        CompanyName = new String[c.length()];
        for (int j = 0; j < c.length(); j++) {
            CompanyName[j] = c.getString(j);
        }


    }

与tab_confg1类似...

EN

回答 3

Stack Overflow用户

发布于 2012-07-03 00:04:23

doInBackground未与主UI线程同步...因此,您不能通过此方法直接更新您的UI (您必须使用HandlermContext.runOnUiThread() )。但是,您可以从onPostExecute更新UI,因为此方法是在UI线程上执行的。

票数 2
EN

Stack Overflow用户

发布于 2012-07-03 00:11:27

使用runOnUiThreaddoInBackground的非UI线程访问UI。

代码语言:javascript
复制
@Override
protected String doInBackground(Void... params) {
    Activity_Name.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // your code here to access UI elements

                }
            });
  return "string";
}
票数 0
EN

Stack Overflow用户

发布于 2012-07-03 00:29:06

试试这个。

1.每当我们在安卓系统中启动一个应用程序时,我们就会在专用的UI线程上启动。

2.创建任何线程都会从UI线程中删除一个

3.将UI工作放在UI线程中,将非UI工作放在非UI线程中是明智的,但随着HoneyComb安卓版本的发布,它继续成为规则。

4.虽然可以使用非UI线程通过处理程序将工作从非UI线程发布到UI线程,但提供了AsyncTask,这有助于将在非UI线程上完成的工作同步回UI线程

在AsyncTask<>中

-> doInBackground()会处理非UI的工作。

-> PostExectue()将帮助将非UI工作发送回UI线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11297185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档