В моем приложении blackberry я использую альтернативную точку входа и запускаю поток при запуске, который выполняет http-операцию, и через некоторое время один и тот же поток вызывается, скажем, через 3 минуты. Он работает, но проблема в том, что он зависает
вот мой код.
final class sendUnsentService extends Thread {
Timer timer;
TimerTask repeatMe;
sendUnsentService me;
boolean working = false;
public boolean isWorking() {
return working;
}
public void interrupt() {
super.interrupt();
System.out.println("___________________________[STOPSERVICE()]");
try {
timer.cancel();
} catch (Exception e) {
System.out
.println("_______________________[PROBLEM STOPPING SERVICE]");
}
}
public void run() {
super.run();
System.out.println("___________________________[STARTSERVICE()]");
new Thread() {
public void run() {
timer.schedule(repeatMe, 0, 300000);
};
}.start();
}
public sendUnsentService() {
me = this;
ImageUtils.initPersistentStorage();
timer = new Timer();
repeatMe = new TimerTask() {
public void run() {
working = true;
if (sendUnsentActivity()) {
me.interrupt();
}
working = false;
}
};
}
Я вызываю эту ветку для некоторого взаимодействия с пользователем, используя этот код, а затем он вешает пользовательский интерфейс
try {
helloBerry.service = new sendUnsentService();
} catch (Exception e) {
System.out.println("_____________1 " + e);
}
try {
helloBerry.service.startService();
} catch (Exception e) {
System.out.println("_____________2 " + e);
}
и вот как я вызываю службу для запуска при загрузке устройства в основном методе с использованием альтернативной точки входа
if (args != null && args.length > 0 && args[0].equals("normal")) {
System.out.println("_________[STARTING APP]");
___________some code here to show a screen
}
} else {
System.out.println("_________[STARTING SERVICE]");
service = new sendUnsentService();
service.run();
}