Я делаю приложение, в котором есть два модуля. 1. Модуль пользовательского интерфейса (Зарегистрируйте слушателя) 2. Серверный модуль (Сделайте слушателя)
Эти два модуля взаимодействуют с обратными вызовами.
Например,: Когда я нажимаю кнопку в пользовательском интерфейсе, я вызываю API серверного модуля, а затем, когда он успешно выполняет свою работу, сервер отправляет обратный вызов, который слушал пользовательский интерфейс. Код пользовательского интерфейса: server.updatePhoneNumber (newNumber) // Я отключаю здесь кнопку, чтобы избежать более одного нажатия на код обратного вызова пользовательского интерфейса:
@override
onUpdatePhoneNumber(int result) {
// using runOnUiThread()
// do or update UI accordingly, generally I enable the button here again
}
Я сделал это, но весь код находится в моем MainActivity.javaМне нужно кодировать весь модуль пользовательского интерфейса в соответствии с MVVM или другим шаблоном. Но я не могу этого сделать.
РЕГИСТРАЦИЯ ЛИСТЕНЕРА
ServerImpl.getInstance(this).registerEventListener(this);
ВЫЗОВ СЕРВЕРА
@Override
public boolean onPreferenceClick(Preference preference) {
ServerImpl.getInstance(this).setDeviceServiceMode(pref.getDeviceId(), isChecked);
// DISABLE BUTTON
}
ЭТО ЗВОНОК
@Override
public void onSetDeviceServiceMode(String deviceId, boolean result, ServerInterface.Reason errorCode, boolean currServiceMode) {
MdecLogger.d(LOG_TAG, "onSetDeviceServiceMode: deviceId = " + deviceId + " result = " + result + " errorCode = " + errorCode + " currServiceMode = " + currServiceMode);
int switchState = 0;
if (currServiceMode)
switchState = 1;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (result) {
// ENABLE BUTTON
} else {
Toast.makeText(mContext, R.string.server_connect_failed_msg, Toast.LENGTH_LONG).show();
}
}
});
}