2014-03-19 55 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