@Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent != null && intent.getAction() != null && ACTION_PAUSE.equals(intent.getAction())) { pause(); } else { final Message msg = serviceHandler.obtainMessage(); msg.arg1 = TWO_WAY_SYNC; serviceHandler.sendMessage(msg); } // If we get killed, after returning from here, restart return START_STICKY; }
public void startSync(final DmrDevice device, final OnDeviceStateChangeListener listener) { if (handlers.containsKey(device.getUdn())) { return; } HandlerThread thread = new HandlerThread(String.valueOf(System.currentTimeMillis())); thread.start(); Handler actionHandler = new Handler(thread.getLooper()); // 如果当前线程没有Looper,需要创建Looper对象 if (Looper.myLooper() == null) { Looper.prepare(); SyncHandler handler = new SyncHandler(Looper.myLooper(), device, listener, actionHandler); handlers.put(device.getUdn(), handler); handler.start(); Looper.loop(); } else { SyncHandler handler = new SyncHandler(Looper.myLooper(), device, listener, actionHandler); handlers.put(device.getUdn(), handler); handler.start(); } }
@Override public void onChange(boolean selfChange, Uri uri) { handler.onMonitorChange(); }
public void stopSync(final DmrDevice device) { SyncHandler handler = handlers.get(device.getUdn()); if (handler == null) return; handler.stop(); handlers.remove(device.getUdn()); }