У меня есть приложение, которое выполняет следующее: получает данные GPS через DDMS и сохраняет их в базе данных, и пока данные хранятся в базе данных, я также должен запустить поток клиента, который считывает новые данные, хранящиеся в базе данных, иотправляет его на удаленный сервер !!!
Для получения данных GPS я делаю что-то вроде этого:
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
И в моем методе LocationChanged я вставляю данные GPS в базу данных:
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
latitude=(int)(loc.getLatitude()* 1E6);
longitude=(int)(loc.getLongitude()* 1E6);
db.insertData1(longitude,latitude);
}
}
И теперь моя проблема:
Как / где я должен запустить поток клиента .... который читает базу данных?
Сначалапопытался запустить поток клиента сразу после этой строки:
m.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
Но если я это сделаю, у меня есть риск получить принудительное закрытие, потому что поток клиента читает базу данных, которая может быть пустой.
Откуда мне знать, когда начинать читать базу данных?
Должен ли я использовать протокол ожидания / уведомления для клиентского потока, чтобы при получении обновления GPS я читал базу данных ????Кому я должен реализовать ожидание / уведомление в одном потоке ?? Спасибо ... я здесь для дальнейших вопросов:)