我想更新文本视图,来自AsycTask的微调器。
我从服务器获取数据并以 json 形式返回结果,然后我解析 JSON 并在两个微调器和一个文本视图中填充数据。当我使用 Asyctask 时如何更新数据,因为文本视图不更新。.这是我的代码狙击
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...
doInBackground
未与主 UI 线程同步...因此,您无法直接从此方法更新 UI(您必须改用 Handler
或 mContext.runOnUiThread()
)。但是,您可以从 onPostExecute
更新 UI,因为此方法是在 UI 线程上执行的。
使用 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";
}
试试这个...
1.每当我们在Android中启动应用程序时,我们都会从专用UI线程开始。
2.创建任何线程都会 从UI线程中删除一个线程。
3. 建议在 UI 线程中保持 UI 工作,在非 UI 线程中保持非 UI 工作,但这样做 随着HoneyComb Android版本的发布,继续成为规则。
4. 虽然非 UI 线程可用于使用处理程序将工作从它发布到 UI 线程,但 Android 提供了 AsyncTask,这有助于同步在 非 UI 线程返回到 UI 线程
在 AsyncTask 中<>
---> doInBackground() 将处理非 UI 工作。
---> PostExectue() 将有助于将 NON-UI 工作发布回 UI 线程。