как можно синхронизировать метод onsuccess вызова клиента kinvey

Я разрабатываю приложение, используя Kinvey в качестве бэкэнда. Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю запрос kinvey appData, элемент управления не переходит в метод onsuccess вызова kinvey и возвращается обратно в место вызывающего метода. Вот мой основной класс, в котором я вызываю функцию, у которой есть вызов клиента kinvey для извлечения данных.

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ac_image_list);
    // kinvey login here//

     // here is the function that fetch my data from kinvey
     GetAllCategory();

    imageUrls=urls // this is the assignment that cause Null pointer Exception

    }

теперь вот моя функция GetAllCategories

        public void GetAllCategory(){
       AsyncAppData<EntityCategories> myEvents=mKinveyClient.appData("categories",  EntityCategories.class);                                      
       myEvents.get(new Query(), new KinveyListCallback<EntityCategories>(){
       @Override
        public void onFailure(Throwable error) {
            // TODO Auto-generated method stub
            Log.e(TAG, "failed to save event data", error);
        }

        @Override
        public void onSuccess(EntityCategories[] result1) {
            // TODO Auto-generated method stub

        //  Log.e(TAG,"Name is "+result1[0].get("name"));
        //  Log.e(TAG,"type is"+result1[0].get("type"));

            categories=result1;
            //onPrintCategoryClick();
        for(int i=0;i<categories.length;i++){

            imageUrls[i]=(String) categories[i].get("icon");

        }

        }


    });
    }

но управление возвращается к методу oncreate сразу после выполнения вызова kinvey и не переходит к методу onSuccess. После выполнения всего метода oncreate он возвращается к onSuccess. но до этого приложение вылетало из-за исключения указателя NUll.

простите мое плохое форматирование, спросите меня, хотите ли вы, чтобы я объяснил больше. Предварительная благодарность


person Fahid Nadeem    schedule 12.09.2014    source источник


Ответы (1)


Поздний ответ, но на всякий случай, если кто-то еще придет искать:

Как понятно из названия — AsyncAppData, вызов Kinvey для получения данных выполняется асинхронно.

Лучше всего было бы назначить URL-адреса в методе onSuccess. До тех пор вы должны показывать диалоговое окно прогресса, чтобы пользователь знал, что происходит.

person Sirisha Jayanti    schedule 28.07.2015