异步任务android ..该怎么办?
问题描述:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent=new Intent(getApplicationContext(),RssActivity.class);
intent.putExtra(NEKI_STRING,listItems.get(position).getLink().toString());
startActivity(intent);
}
因此我在ItemClick上有这个事件我想开始我的活动但是我想把它放在一个私人类中AsyncTaskRunner扩展了AsyncTask,因为我的老师希望它不会在没有互联网连接时崩溃。那么是否有另一种方法,我如何实现AsyncTask,我试图复制/粘贴的意图,如在这里看到的AsyncTask函数的TryCatch块,但它没有工作,它只是坠毁。异步任务android ..该怎么办?
答
,你可以用这个方法来检查Internet连接:
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
然后你就跟老师希望它是一个异步任务中使用它..
private class AsyncTaskRunner extends AsyncTask<String, String, String>{
private Context context;
private String NEKI_STRING;
private String listItemString;
public AsyncTaskRunner(Context context ,String neki_string, String listItemString){
this.context = context;
NEKI_STRING = neki_string;
this.listItemString = listItemString;
}
@Override
protected String doInBackground(String... params) {
if(isNetworkAvailable(context)){
return "OK";
}
return "";
}
@Override
protected void onPostExecute(String reply) {
super.onPostExecute(reply);
if(reply.equals("OK")) {
try{
Intent intent=new Intent(getApplicationContext(),RssActivity.class);
intent.putExtra(NEKI_STRING,listItemString);
startActivity(intent);
}catch(Exception e){
}
}
}
}
异步任务不是它需要的,但因为你需要实现它。
然后你运行你的异步任务:
public void onItemClick(AdapterView<?> parent, View view,
new AsyncTaskRunner(getApplicationContext(), NEKI_STRING, listItems.get(position).getLink().toString()).execute();
}
你'onItemClick'看起来只有精细(提供'listItems'不为空,并包含有效的项目),如果应用程序在'RssActivity'崩溃,办理在该类中崩溃,所以从'RssActivity'发布crashtraptrace和相关的代码。 – petey 2015-02-09 22:36:36