gpt4 book ai didi

java - 在 ArrayAdapter 中使网络调用安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:57 25 4
gpt4 key购买 nike

我使用 Google Places API 开发了 AutoCompleteTextView。当用户输入地址时,我正在对 API 进行网络调用。我尝试模拟崩溃,但请求在我能够更改配置之前完成。

    public class PlacesAutoCompleteAdapter extends ArrayAdapter<Prediction> implements Filterable {

private List<Prediction> resultList;

public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}

@Override
public int getCount() {
return resultList.size();
}

@Override
public Prediction getItem(int index) {
return resultList.get(index);
}

@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
ShlepenApp.getGoogleRestClient().getPlaceList(GoogleService.API_KEY, constraint.toString(), new Callback<GooglePlacesListResponse>() {
@Override
public void success(GooglePlacesListResponse placesListResponse, Response response) {
Log.i("TAGE", "SUCCESS");
resultList = placesListResponse.getPredictions();
notifyDataSetChanged();
}

@Override
public void failure(RetrofitError error) {
Log.i("TAGE", "FAILURE");
//TODO: Post something useful here.

}
});
// Assign the data to the FilterResults
filterResults.values = resultList;
filterResults.count = resultList.size();
}
return filterResults;
}

@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}};
return filter;
}
}

编辑:您能否详细说明当我旋转设备时网络通话期间实际发生了什么?由于自动 TextView 中存在字母,此调用会丢失然后重新创建吗?

最佳答案

Can you please elaborate what actually happens during a network call when I rotate the device? Will this call be lost, and then recreated because letters are present in autotextview?

我没有使用过 Google Places API但我认为这可能对您有所帮助:

当你旋转你的设备时,你的 Activity 被终止并且你的适配器但是执行网络操作的线程存在并且正在执行它的工作。完成工作后,它会告诉您结果(调用回调失败或成功之一)但是没有适配器,因为旧适配器已被垃圾收集并且线程无法访问新适配器,因此它正在调用回调方法,在每个方法中它将访问空对象 (private List<Prediction> resultList;) .

关于java - 在 ArrayAdapter 中使网络调用安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817603/

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