@SuppressWarnings("unchecked") public <T extends Wireable> T unwire(Class<T> wireClass) { assertObjectAndWorkerThread(wireClass); Context context = mImpl.getNotNullContext(); Wireable wireable = getWireable(wireClass); if (wireable != null) { if (context instanceof Application || context instanceof Service) { wireable.onStop(); wireable.onDestroy(); } mWireables.remove(wireable); } return (T) wireable; }
@Override public void onDestroy() { if (mWireables != null) { for (Wireable wireable : mWireables) { wireable.onDestroy(); } } synchronized (this) { if (mDelayedTasks != null && mDelayedTasks.size() > 0) { Handler handler = getMainHandlerNotNull(); Collection<Task> tasks = mDelayedTasks.values(); for (Task task : tasks) { handler.removeCallbacks(task); task.recycle(); } mDelayedTasks.clear(); } } }