2013-02-13 51 views
4

使用帶有消息的意圖而不是在Java中聲明靜態變量並從新的活動調用它的目的是什麼?這對我來說似乎更容易,因爲你可以讓靜態變量成爲你想要的任何東西(即ArrayList,Object等)。Android意圖額外消息與靜態變量

public class FirstActivity extends Activity { 
    public static String name; 
... 
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
    name = "Robert"; 
    startActivity(intent); 
} 

public class SecondActivity extends Activity { 
... 
    textView.setText(FirstActivity.name); 
} 
+0

更容易!=正確 – Simon 2013-02-13 23:03:22

回答

4

如果你只希望從FirstActivity開始SecondActivity而不是從以往的任何其他活動,那麼您的解決方案可能是不夠好。

通過使用附加組件開始SecondActivity,可以使其更具可重用性。許多股票活動都是以這種方式工作的,這就是爲什麼您可以重複使用相機活動來拍攝和保存照片的原因,因爲它不會假設誰在調用它。

在你的情況下,如果SecondActivity在沒有加載到JVM中的FirstActivity的情況下啓動,則可能會出現意外的行爲或空指針異常。這在你的用例中可能不是一個風險,所以這取決於你。

0

爲了澄清,如果他/她之外的其他應用程序想要處理意圖,則OP的策略將不起作用。正因爲如此,這不是「最佳做法」。

對於意圖,大概有30個不同的putExtra變體,每個變體代表可以添加的不同數據類型。它們包括通用數據類型,例如Bundle,Parcelable,Serializable等等。我不能想到這些不包括的東西。

我不使用通過覆蓋應用程序或其他類似的方式假定某些數據在存儲中浮動而定義的靜態或變量。假設我的Activity或Fragment是完全獨立的,這會更加健壯。