代码之家  ›  专栏  ›  技术社区  ›  Stelios Papamichail

使用AsyncTask在日志cat中打印数据<>出错

  •  0
  • Stelios Papamichail  · 技术社区  · 6 年前

    我正在尝试打印从 RiotApi 使用API ASyncTask 然后用 Log.d 数据和 Log.i 如果A RiotApiException 异常由引发 printSummonerData() 方法。但是,当我运行应用程序时,它编译并运行得很好,我没有得到 RiotApiExceptions 但数据不会被记录下来。有人能帮我弄明白为什么会这样吗?

    附言:我不确定是否应该使用 异步任务 首先(我对线程、同步和异步任务等完全陌生),但是根据我在Android文档中读到的内容,我不应该用网络请求等来阻塞主UI线程,所以我认为我应该使用 异步任务 . 如果我的假设是错误的,请纠正我。

     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 回复  |  直到 6 年前
        1
  •  1
  •   NickUnuchek Romulano    6 年前

    AsyncTask

    new DownloadSummonerData().execute();
    

    // Assume DownloadSummonerData extends AsyncTask
    DownloadSummonerData myAsyncTask= new DownloadSummonerData();
    
    // Execute in parallel
    myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
    
    推荐文章