使用 ASyncTask<> 在 Logcat 中打印数据出错
Printing data in the Logcat using ASyncTask<> gone wrong
我正在尝试使用 ASyncTask
打印我从 RiotApi
Api 获得的一些数据,然后使用 [=14= 将它们记录在 logcat 中] 对于数据和 Log.i
如果 RiotApiException
异常被 printSummonerData()
方法抛出。然而,当我 运行 它编译的应用程序和 运行 就很好,我没有 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());
}
}
您没有启动 AsyncTask
。做他的
new DownloadSummonerData().execute();
或
// Assume DownloadSummonerData extends AsyncTask
DownloadSummonerData myAsyncTask= new DownloadSummonerData();
// Execute in parallel
myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
我正在尝试使用 ASyncTask
打印我从 RiotApi
Api 获得的一些数据,然后使用 [=14= 将它们记录在 logcat 中] 对于数据和 Log.i
如果 RiotApiException
异常被 printSummonerData()
方法抛出。然而,当我 运行 它编译的应用程序和 运行 就很好,我没有 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());
}
}
您没有启动 AsyncTask
。做他的
new DownloadSummonerData().execute();
或
// Assume DownloadSummonerData extends AsyncTask
DownloadSummonerData myAsyncTask= new DownloadSummonerData();
// Execute in parallel
myAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)