2015-02-09 37 views
-1
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

回答

1

,你可以用這個方法來檢查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(); 
    }