gpt4 book ai didi

android - OkHTTP 从排队回调更新 UI

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:25 25 4
gpt4 key购买 nike

我正在尝试使用 OkHTTP 库。调用服务器并获得成功响应时。我需要更新 UI。

在使用 enqueue() 进行异步调用时如何做到这一点?

client.newCall(request).enqueue(new Callback() {

@Override
public void onFailure(Request request, IOException e) {

}

@Override
public void onResponse(Response response) throws IOException {

if (response.isSuccessful()) {

// NEED TO UPDATE UI HERE

}
}
});

最佳答案

您可以引用下面的示例代码,希望对您有所帮助!

public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG = "OkHttp";
private TextView mTextView;
private Handler mHandler;
private String mMessage;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textView);
mHandler = new Handler(Looper.getMainLooper());
OkHttpClient client = new OkHttpClient();
// GET request
Request request = new Request.Builder()
.url("http://...")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
mMessage = e.toString();
Log.e(LOG_TAG, mMessage); // no need inside run()
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText(mMessage); // must be inside run()
}
});
}

@Override
public void onResponse(Response response) throws IOException {
mMessage = response.toString();
Log.i(LOG_TAG, mMessage); // no need inside run()
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText(mMessage); // must be inside run()
}
});
}
});
}
}

关于android - OkHTTP 从排队回调更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com