hej, mam aplikacje na telefon i nastepujacy problem:
mam watek, a w nim 2 timer'y-oba maja slac dane na serwer. pierwszy co 5sekund, drugi co sekunde. problemem jest to, ze po uruchomieniu aplikacji po paru sek zostaje rozlaczona (IOException). mysle ze prawdopodobnie przez to ze w jakims momencie oba timery probuja poslac dane w tej samej chwili. oto moj kod:
//in my thread, run method:
public void run(){
synchronized(_firstTimer){
//send data every 5 sec
_firstTimer.scheduleAtFixedRate(new TimerTask(){
public void run(){
sendData(_data1);
}
},0, 5000);
}
while(true){
synchronized(_secondTimer){
//send data every second
_secondTimer.scheduleAtFixedRate(newTimerTask(){
public void run(){
sendData(_data2);
}
}, 0, 1000);
}
}//end of while
}//end of run()
//and sendData() method:
public boolean sendData(byte[] _b){
int length = _b.length;
try{
_os.write(_b, 0, length);
_os.flush();
return true;
} catch(Exception e){ return false; }
}//end of sendData method
//where before in the code i've got:
SocketConnection _s = (SocketConnection)Connector.open(_address);
_os = _s.openDataOutputStream();
czy ktos z Was ma moze jakies sugestie?
probowalam ustawiac flage w metodzie sendData:
public boolean sendData(byte[] _b){
//ustaw flage ze dane sa slane
singleton.daneSlane();
int length = _b.length;
try{
_os.write(_b, 0, length);
_os.flush();
//dane nie sa juz slane
singleton.daneNieslane();
return true;
} catch(Exception e){
daneNieslane();
return false; }
}//end of sendData method
i pozniej na podstawie tej flagi obslugiwac pierwszy timer:
synchronized(_firstTimer){
//send data every 5 sec
_firstTimer.scheduleAtFixedRate(new TimerTask(){
public void run(){
//slij dane jest flaga nie jest ustawiona na tryb slania
if(singleton.czyDaneSlane() == false ){
sendData(_data1);
}
}
},0, 5000);
}
ale i to nie pomaga..
bede wdzieczna za wszelkie wskazowki,
pzdr,
misty