고정 된 간격으로 서버에 메시지를 보내는 BlackBerry Application이 있습니다. 메시지는 사용 가능한 연결 방법 중 하나를 사용하여 웹 서비스를 통해 전송됩니다. Wifi, BIS, TCP/IP 등.BlackBerry - 영구 객체 벡터에서 쓰기 및 읽기
연속적으로 메시지가 전송되므로 인터넷을 사용할 수없는 경우 메시지를 대기시키고 인터넷이 사용 가능 해지면 메시지를 전송하는 메커니즘이 필요합니다. 이런 이유로, 먼저 영구 저장소에 나가는 메시지를 저장 한 다음 영구 저장소를 읽고이를 통해 루프하여 모든 보류중인 메시지를 보내려고합니다. 새 메시지는 영구 저장소의 마지막 지점에 저장해야합니다.
나는 "보내기"를 할 때 아래의 두 가지 방법을 호출하고 클릭 :
public static void saveMessage(String msg){
Hashtable hashtable=new Hashtable();
persistentObject = PersistentStore.getPersistentObject(KEY);
hashtable.put("MessageToSend", msg);
persistentObject.commit();
}
public static void sendMessage(String msg){
Hashtable hashtable=new Hashtable();
persistentObject = PersistentStore.getPersistentObject(KEY);
Vector msgVector = (Vector)persistentObject.getContents();
Enumeration eMsgs=msgVector.elements();;
/*synchronized(poObject)*/{
persistentObject.setContents(msgVector);
persistentObject.commit();
}
int i=0;
while(eMsgs.hasMoreElements()){
hashtable=(Hashtable)eMsgs.nextElement();
String encryptedMessage=(String)hashtable.get("MessageToSend");
if(!encryptedMessage.equals("")){
//check internet connection
String C0NNECTION_EXTENSION = checkInternetConnection();
if(C0NNECTION_EXTENSION==null)
{
Dialog.alert("Check internet connection and try again");
return;
}
else
{
MyScreen.PostMsgToServer(encryptedMessage);
hashtable.remove(encryptedMessage);
}
}
i++;
}
}
이 내가 건너 온 자습서/예에서 불과 시도이다. 친절하게 도와주세요.
감사합니다. 아이디어는 모든 메시지를 먼저 저장 한 다음 벡터를 반복하여 각 메시지를 보냅니다. 위의 코드를 사용하여 메시지를 보내는 코드를 추가했습니다. 아무 반응이 없습니다. 어떤 이유로, 디버그가 제대로 작동하지 않아서 오류가 발생한 정확한 줄을 알 수 없습니다. 그러나 나는 서버를 점검했고 메시지는 전달되지 않았다.그래도 Wifi가 꺼진 상태에서 보내기를 클릭 했으므로 Wifi가 켜진 상태로 세 번째 메시지가 대기열에 대기되기 전에 벡터에 이미 두 항목이 있는지 확인해야합니다. 이유는 무엇입니까? – Sarah
@Sarah, 송신 코드에 문제가 있으면 별도의 문제입니다. 다시 말하지만, 위의 예에서 코드를 저장하여 메시지 큐 저장 문제에만 집중했습니다. 먼저 모든 PersistentObject 코드를 제거하는 것이 좋습니다. 'sendMessage()'를 구현하여 ** 하나 ** 메시지를 직접 보내도록하십시오. 서버에 메시지를 보내려면 먼저 작동하는지 확인하십시오. 작동하면, PersistentObject 코드에 다시 추가하십시오. 그리고 디버그 기능을 다시 사용하도록 노력할 것입니다. 다른 모든 기능에도 도움이 될 것입니다. – Nate