현재 동작방식은
액티비티가 실행이 됩니다
그러면서 서비스를 하나 실행을 합니다 startService
서비스에서는 센서를 우선적으로 이용합니다 SensorManager
그러다 조건이 맞으면 로케이션매니져를 등록하고 위치정보 서비스를 이용합니다 LocationManager
위치가 변화되면 문자로 위치를 전송해주고 자기를 죽입니다 onLocationChanged - removeUpdates
그리고 일정 시간이 지난 후 다시 LocationListener 를 등록합니다 위의 작업을 다시 수행합니다
그런데 여기서 액티비티가 종료가 될때 stopService 를 수행합니다
찾아보니 stopSelf 를 하면 이게 죽이는거라고 해서 서비스의 onDestroy 에도 넣었습니다 ㅡㅡㅋ 혹시 몰라서.....
그런데 어플이 종료된 뒤에도 다시 서비스는 살아남니다...
그러면서 문자를 또 막 보내댑니다...
즉 액티비티를 죽일때 서비스를 죽게 해놨으나 서비스는 다시 살아나서 혼자 동작을 합니다
웃긴건 센서값의 조건은 따르지 않고 위치정보 서비스만 이용을 하는데
이건 제가 flag 값을 준 위치가 잘못 되어 센서는 패스한거로 보이거나
서비스에서 아까 동작하던 중에 죽은 이후부터 다시 실행이 되는듯 합니다
즉 센서가 동작하고 위치정보 서비스를 이용하는데 그 순간 죽으면 위치정보 서비스를 다시 수행하는 듯 합니다...
이거때문에 소스도 막 고치고 그랬는데 전혀 변화가 없네여 ㅠㅠ
어디에서부터 소스가 잘못 된걸까요??
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location loc) {
if (!flag_already_sendMsg) {
flag_already_sendMsg = true;
if (phone) {
sendSMS(phoneNum, str);
Log.d("HereIAm", "call sms");
}
locationManager.removeUpdates(locationListener);
Log.d("HereIAm", "remove location listener");
interval = 1;
try {
Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
public void run() {
flag_already_sendMsg = false;
locationManager.requestLocationUpdates(provider, 1000L, 1.0f, locationListener);
Log.d("HereIAm", "re-call get location method");
} }, interval * 1000 * 60); // 로딩 시간
} catch (Exception e) {
}
}
}
public void onStatusChanged(String arg0, int arg1, Bundle extras) {
}
public void onProviderEnabled(String arg0) {
}
public void onProviderDisabled(String arg0) {
}
};
아... 강제종료 시켜도 되살아나요....
이거때문에 이번달 문자 다 썼음 ㅡㅡㅋ