Неслучайно для разработки Android/Java и использования Parseplatform с открытым исходным кодом в качестве моего бэкэнд-сервера. Я создал класс для управления объектом синтаксического анализа, а его данные обновления объекта - из асинхронного вызова на сервер синтаксического анализа в соответствии с этим кодом.Множественные вложенные обратные вызовы от класса Async
public class DeviceObject {
private String objectID, deviceName, status;
private ParseGeoPoint location;
int batLevel;
public DeviceObject(){
objectID = null;
deviceName = null;
location = null;
batLevel = 0;
status = null;
}
public void getDeviceLatestData() {
if (objectID != null) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("DeviceData");
query.whereEqualTo("DeviceObjectID", objectID);
query.orderByDescending("createdAt");
query.setLimit(1);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> ParseDeviceList, ParseException e) {
if (e == null) {
if (ParseDeviceList.size() == 0) {
Log.d("debg", "Device not found");
} else {
for (ParseObject ParseDevice : ParseDeviceList) {
status = ParseDevice.getString("Status");
batLevel = ParseDevice.getInt("BatteryLevel");
location = ParseDevice.getParseGeoPoint("Location");
Log.d("debg", "Retrieving: " + deviceName);
Log.d("debg", "Status: " + status + " Battery: " + Integer.toString(batLevel));
}
//callback listener to add marker to map
}
} else {
Log.d("debg", "Error: " + e.getMessage());
}
}
});
}
}
Так я создаю свой объект класса в моей основной деятельности со следующим:
DeviceObject userDevice = new DeviceObject();
userDevice.getDeviceLatestData();
То, что я не могу получить мою голову вокруг, как в моем MainActivity я могу получить уведомление/обратного вызова, чтобы продолжить отображая информацию, которую класс userDevice только что удалил с сервера анализа.
Я попытался создать интерфейс и добавить слушателя в то, что я видел, однако я не мог добавить слушателя внутри выполняемой функции синтаксического анализа.
Определение моей основной деятельности, обратите внимание, мне нужно OnMapReadyCallback, как я использую Google Maps
public class MapMainActivity extends AppCompatActivity implements OnMapReadyCallback {
Таким образом, в заключение я хотел бы добавить что-то к основному виду деятельности, так что я могу обрабатывать данные, когда он был добавлен в класс из асинхронного вызова.
Wow, что работали и так легко. Я никогда не слышал о eventbus до сегодняшнего дня, он отлично работает. Большое спасибо! – BrentonGray88
@ BrentonGray88 уверенный предмет! – kpsharp