2014-03-19 59 views
0

我想以異步方式執行startActivity(intent)intent.putExtra()。 例如putExtra異步方式

public class SomeActivity extends Activity { 
    // listener for button 
    public void onSomeButtonClicked(View ignored) { 
     final Intent intent; 
     // instantiate intent 

     new AsyncTask<Void, Void, String>(){ 
      protected String doInBackground(Void... ignored) { 
       // do heavy task 
       return "didALotOfWork"; 
      } 
      protected void onPostExecute(String resultOfHeavyTask) { 
       intent.putExtra("key", resultOfHeavyTask); 
      } 
     }.exexute(null); 
     startActivity(intent); 
    } 
} 
在上面的代碼

,我不知道該putExtra可以通過startActivity之前。

這段代碼有什麼問題嗎? 異步地在活動間傳遞數據的最佳解決方案是什麼?

我想出的方法是編輯SharedPreference。但是,我認爲更好的可能存在。

回答

0

看來你最可能得到空指針異常。

初始化OnPostExecute中的Intent,並使用相同的方法添加startActivity。檢查以下代碼

protected void onPostExecute(String resultOfHeavyTask) { 
    Intent intent = new Intent(context, <class>); 
    intent.putExtra("key", resultOfHeavyTask); 
    startActivity(intent); 
} 

這應該有效。 Cheerz

+0

這是我目前的解決方法,我不喜歡這種方式,因爲這種方法很慢。我正在以非阻塞方式調查'startActivity'的方式,並稍後傳遞一些數據以提高性能。也許我應該在下一個活動中執行繁重的AsyncTask。 – yskkin