我想更新文本视图,从AsycTask.Actually微调我正在做什么
我从服务器获取数据并返回json格式的结果,然后解析JSON并将数据填充到两个旋转器和一个textview.How中。当我使用Asyctask信标时,我可以更新数据吗Textview没有update..Here是我的代码片段
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类似...
发布于 2012-07-03 00:04:23
doInBackground未与主UI线程同步...因此,您不能通过此方法直接更新您的UI (您必须使用Handler或mContext.runOnUiThread() )。但是,您可以从onPostExecute更新UI,因为此方法是在UI线程上执行的。
发布于 2012-07-03 00:11:27
使用runOnUiThread从doInBackground的非UI线程访问UI。
@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";
}发布于 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线程。
https://stackoverflow.com/questions/11297185
复制相似问题