使用的AsyncTask <>在logcat的打印数据出错

问题描述 投票:0回答:1

我想打印一些数据,我使用RiotApiASyncTask阿比得到,然后使用数据和Log.d Log.i如果RiotApiException异常由printSummonerData()方法抛出登录他们在logcat中。然而,当我运行程序的时候,编译和运行得很好,我没有得到任何RiotApiExceptions但数据不会被记录下来。任何人可以帮助我弄清楚为什么发生这种情况?

PS:我不知道我是否应该首先使用ASyncTask(我是完全新的线程,同步和异步任务等),但是从我在Android文档读过我不应该阻塞主与网络请求等UI线程,所以我想我应该用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());
    }
}
android android-asynctask logcat
1个回答
1
投票

你没有启动AsyncTask。做他的

new DownloadSummonerData().execute();

要么

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

// Execute in parallel
myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
© www.soinside.com 2019 - 2024. All rights reserved.