sink.close();
之后我的代码和操作应该更改textview的文本,但它不会发生。为什么呢?
protected void runNet() throws IOException {
try{
final OkHttpClient client = new OkHttpClient();
final Request request = new Request.Builder()
.url("http://uprojects.pl/radiowezel/questions.db")
.build();
Response response = client.newCall(request).execute();
QuestionsDB db = new QuestionsDB(context);
File downloadedFile = new File(context.getDatabasePath("questions.db"), "");
BufferedSink sink = Okio.buffer(Okio.sink(downloadedFile));
sink.writeAll(response.body().source());
sink.close();
status.setText("Baza została zaktualizowana");
}catch(UnknownHostException e){
status.setText ("Brak połączenia przy pobieraniu");
}
}
答案 0 :(得分:1)
您正在尝试从Android中不允许的后台线程更新UI,您应该从主线程更新它。
您可以使用runOnUiThread
方法(Activity
类的一部分)
private void updateUi(final String string) {
runOnUiThread(new Runnable() {
@Override
public void run() {
status.setText(string);
}
});
}
你可以使用follow方法,从后台线程调用它:
updateUi("Baza została zaktualizowana");
或者使用具有在主线程上执行后运行的回调的AsyncTask
- AsyncTask Android example
您也可以使用Handler
- Running code in main thread from another thread