【发布时间】:2019-04-02 10:14:18
【问题描述】:
我对 Android 开发非常陌生。尝试连接某个站点并从中获取数据。我在主要活动中仅从 onCreate 调用此函数。每次我向左或向右转动虚拟 Android 手机时,我都会在 EditText 中看到新的“run()”字符串,并在 Wireshark 中看到请求。如何正确停止?
在 OnResponse 中尝试了 call.cancel() 和 mClient.dispatcher().cancelAll()
protected void Load(String url) {
Request request = new Request.Builder()
.url(url)
.build();
mClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if (response.isSuccessful()) {
mHandler.post(new Runnable() {
@Override
public void run() {
mEdit.setText(mEdit.getText() + "run()\n");
}
});
}
}
});
}
【问题讨论】:
-
发生这种情况是因为重新配置。每次打开手机时都会重新创建您的活动,因此您的 onCreate 会一次又一次地被调用,这反过来会调用您的 loadString 方法。
-
我在 onCreate 和 Load 的开头添加了跟踪。经过一些轮次后,“onCreate”和“Load”只打印一次,“run”很多imgur.com/dN0Inkr