@Override public boolean handleMessage(Message msg) { onBeforeRun(msg.what, (JsonObject) msg.obj); switch (msg.what) { case ARCHIVE: if (archive != null) { runArchive(); } break; case UPLOAD: if (archive != null && upload != null && uploader != null) { uploader.run(archive, upload); } break; case UPDATE: if (update != null) { update.run(name, manager); } break; case DATA: String name = ((JsonObject) msg.obj).get("name").getAsString(); IJsonObject data = (IJsonObject) ((JsonObject) msg.obj).get("value"); writeData(name, data); break; default: break; } onAfterRun(msg.what, (JsonObject) msg.obj); return false; }