gpt4 book ai didi

android - 当Intent bundle 含可打包的额外内容时未收到广播

转载 作者:搜寻专家 更新时间:2023-11-01 08:08:33 26 4
gpt4 key购买 nike

我有一个 IntentService 正在进行网络调用并接收回一些 JSON 数据。我将此响应数据打包在实现 parcelable 的自定义对象中。如果我将这个 parcelable 对象作为额外添加到一个 Intent 中,然后使用该 Intent 启动一个 Activity ,一切似乎都按预期工作,即我可以从新创建的 Activity 中的 Intent 检索 parcelable。但是,如果我从我的 IntentService 的 onHandleIntent() 方法中创建 Intent ,然后使用 sendBroadcast(),则广播接收器的 onReceive() 方法永远不会触发。但是,如果我不将 parcelable 添加到 Intent 中,onReceive() 方法将按预期触发。以下是一些相关的代码 fragment :

可打包对象:

public class JsonResponse implements Parcelable {

private int responseCode;
private String responseMessage;
private String errorMessage;

public JsonResponse() {

}

/*
/ Property Methods
*/
public void setResponseCode(int code) {
this.responseCode = code;
}

public void setResponseMessage(String msg) {
this.responseMessage = msg;
}

public void setErrorMessage(String msg) {
this.errorMessage = msg;
}

/*
/ Parcelable Methods
*/
public static final Creator<JsonResponse> CREATOR = new Creator<JsonResponse>() {

@Override
public JsonResponse createFromParcel(Parcel parcel) {
return new JsonResponse(parcel);
}

@Override
public JsonResponse[] newArray(int i) {
return new JsonResponse[i];
}
};

private JsonResponse(Parcel parcel) {
responseCode = parcel.readInt();
responseMessage = parcel.readString();
errorMessage = parcel.readString();
}

@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(responseCode);
parcel.writeString(responseMessage);
parcel.writeString(errorMessage);
}

@Override
public int describeContents() {
return 0;
}
}

IntentService 的 onHandle():

protected void onHandleIntent(Intent intent) {

service = new LoginService();
service.login("whoever", "whatever");

JsonResponse response = new JsonResponse();
response.setResponseCode(service.responseCode);
response.setResponseMessage(service.responseMessage);
response.setErrorMessage(service.errorMessage);

Intent i = new Intent();
i.putExtra("jsonResponse", response);
i.setAction(ResultsReceiver.ACTION);
i.addCategory(Intent.CATEGORY_DEFAULT);
sendBroadcast(i);
}

有什么想法吗?任何见解将不胜感激。

最佳答案

问题似乎与作为额外对象添加的对象的大小有关。当响应对象的字符串属性之一变得太大时,广播显然会失败。我没有任何消息来源可以证实这一点,只是在操作其中一个字符串的过程中进行了一些尝试和错误,同时让方程的所有其他变量保持不变。

关于android - 当Intent bundle 含可打包的额外内容时未收到广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077924/

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