异步任务android ..该怎么办?

异步任务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 ..该怎么办?

+1

你'onItemClick'看起来只有精细(提供'listItems'不为空,并包含有效的项目),如果应用程序在'RssActivity'崩溃,办理在该类中崩溃,所以从'RssActivity'发布crashtraptrace和相关的代码。 – petey 2015-02-09 22:36:36

,你可以用这个方法来检查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(); 
    }