我对 AsyncTask 在某一时刻运行但不是下一时刻有一些故障。我已经尽可能地简化了代码。下面的 try/catch 代码在应用程序启动时从 MainActivity 调用时启动我的异步任务。但是,当我将此完全相同的代码放入同一类文件中的按钮时,classCastException 错误会使应用程序崩溃。我对异步有什么不了解的地方吗?谢谢大家。
调用异步的代码:
findViewById(R.id.errorbtn).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
new MainActivity.MyTask().execute(this);
}
catch (Exception e) {
e.printStackTrace();
}
}});
异步任务:
private class MyTask extends AsyncTask<Object, Void, String> {
MainActivity activity;
@Override
protected String doInBackground(Object... params) {
activity = (MainActivity)params[0];
try {
StringBuilder sb = new StringBuilder();
URL url = new URL("https://www.example.com");
BufferedReader in;
in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
sb.append(inputLine);
in.close();
html = sb.toString();
}
catch (Exception e) {
e.printStackTrace();
}
// SOME WORK IS DONE USING HTML VARIABLE & URL DATA...
}
@Override
protected void onPostExecute(String str) {
// RESULT IS LOADED INTO LIST VIEW...
}
}
LEATH
相关分类