Печать данных в Logcat с использованием ASyncTask <> не удалась - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь распечатать некоторые данные, которые я получаю из API RiotApi, используя ASyncTask, а затем зарегистрировать их в logcat, используя Log.d для данных и Log.i, если выдается исключение RiotApiExceptionпо методу printSummonerData().Однако, когда я запускаю приложение, оно компилируется и работает просто отлично, и я не получаю RiotApiExceptions, но данные не регистрируются.Кто-нибудь может помочь мне выяснить, почему это происходит?

PS: я не уверен, должен ли я использовать ASyncTask в первую очередь (я совершенно новичок в потоках, синхронных и асинхронных задачах и т. Д.) но из того, что я прочитал в документации Android, я не должен блокировать основной поток пользовательского интерфейса с помощью сетевых запросов и т. д., поэтому я подумал, что должен использовать ASyncTask.Пожалуйста, поправьте меня, если мои предположения были неверны.

 public class MainActivity extends AppCompatActivity {

    private final static String API_KEY = "MYKEY";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new DownloadSummonerData();
    }

    private static class DownloadSummonerData extends AsyncTask<Void, Void, Void> {
        protected Void doInBackground(Void... urls) {
            try {
                printSummonerData();
            } catch (RiotApiException e) {
                e.printStackTrace();
                Log.i("LOL","Something went wrong!");
            }
            return null;
        }

        protected void onProgressUpdate(Void... progress) {

        }

        protected void onPostExecute(Void result) {

        }
    }


    private static void printSummonerData() throws RiotApiException {
        ApiConfig config = new ApiConfig().setKey(API_KEY);
        RiotApi api = new RiotApi(config);
        Summoner summoner = api.getSummonerByName(Platform.EUNE, "XmaxUniverse");
        Log.d("LOL","Name: " + summoner.getName());
        Log.d("LOL","Summoner ID: " + summoner.getId());
        Log.d("LOL","Account ID: " + summoner.getAccountId());
        Log.d("LOL","PUUID: " + summoner.getPuuid());
        Log.d("LOL","Summoner Level: " + summoner.getSummonerLevel());
        Log.d("LOL","Profile Icon ID: " + summoner.getProfileIconId());
    }
}

1 Ответ

0 голосов
/ 07 февраля 2019

Вы не начали свой AsyncTask.Сделай его

new DownloadSummonerData().execute();

ИЛИ

// Assume DownloadSummonerData extends AsyncTask
DownloadSummonerData myAsyncTask= new DownloadSummonerData();

// Execute in parallel
myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
...