문제점을 찾았습니다!!
혹시라도 같은 문제 겪을 분들 위해서 추가합니다.
MainService 에서 보면
Thread thread = new Thread();
thread.start();
부분이 있는데
Thread thread = new Thread(this); 로 고쳐주니 작동하네요!!
얼마전까지는 잘 작동되다가 어느날 갑자기 서비스에서 run() 이 작동되지 않습니다.
며칠간 고민해봐도 해답이 나오지 않아 여기 질문해봅니다.
AlarmManagerService -> AlarmManagerReceiver -> MainService 구조로 실행되는데,
public class AlarmManagerService {
Context mContext;
public AlarmManagerService(Context context) {
mContext = context;
}
public void registerAlarmManager() {
Log.i("registerAlarmManager()", "registered");
Intent intent = new Intent(mContext, AlarmManagerReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 123456, intent, 0);
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+1000, 180000, pendingIntent);
}
}
public class AlarmManagerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("AlarmManagerReceived", "received");
if (!isServiceRunning(context)) {
Intent service = new Intent(context, MainService.class);
context.startService(service);
}
}
private boolean isServiceRunning(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service: am.getRunningServices(Integer.MAX_VALUE)) {
if (MainService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
}
public class MainService extends Service implements Runnable {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("onStartCommand", "called");
.....
Thread thread = new Thread();
thread.start();
return START_STICKY;
}
@Override
public void run() {
while (true) {
Log.i("run", "run()");
.....
}
}
}
Log:
01-25 09:43:44.564 1765-1765/cc.psdev.heywifi I/registerAlarmManager()﹕ registered
01-25 09:43:56.241 1765-1765/cc.psdev.heywifi I/AlarmManagerReceived﹕ received
01-25 09:43:56.249 1765-1765/cc.psdev.heywifi I/onStartCommand﹕ called
여기까지만 오고 run 에 들어오질 않네요..
잘 작동하던게 갑자기 안되서 당황스럽네요;;
안드로이드 스튜디오 설정 파일 삭제하고 다시 불러와도 해결되지도 않고........