2011-07-01 23 views
1

根據我從使用intents傳遞數據中學到的知識,當您通過intent將Activity O中的Object O傳遞給Activity B時,Activity B會收到一個對象O的COPY。事情的工作方式是該對象O被序列化(轉換爲字節序列),然後該字節序列被傳遞給活動B.然後活動B在序列化時重新創建對象O的副本。 我想知道如果擴展Intent類以創建自定義Intent並引用其他活動所需的對象並將數據傳遞給其他活動,是否會有效。例如:關於intents

public class CustomIntent extends Intent { 
private Object o; 

public CustomIntent() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 
public Object getObject() { 
    return o; 
} 
public void setObject(Object object) { 
    this.o = object; 
} 
} 

在接收活動我得到的意圖和鑄意圖將CustomIntent類型和檢索由活性所需的對象。這是否會通過減少對序列化的需求來提高效率?請在此點亮一些。提前致謝。

+0

你試過這個嗎?它真的有用嗎? – yydl

+0

是的,我嘗試過它,它適用於我。 –

回答

0

號碼意圖由Android系統調度並且始終序列化,因爲它們可以發送到系統中的任何活動,服務等。

對於你的問題,你可以可能是由它創建一個Application類和將數據存儲解決此問題:

class CustomApplication extends Application { 
    private Object data; 

    public Object getData() { 
    return data; 
    } 

    public void setData(Object data) { 
    this.data = data; 
    } 
} 

您通過更新AndroindManifest.xml設置應用標籤android:name屬性激活您的班級名稱。

要在活動中使用:

CustomApplication app = (CustomApplication) getApplicationContext(); 
app.setData(yourDataObject); 
0

我想,如果你讓你的Andr ?? oid處理一切會更好。不要定製它,如果它不是非常重要的話。

如果你想在另一個活動中擁有對象的引用,那麼還有其他方法。

  • 您可以使對象靜態並直接從其他活動訪問它。

  • 您可以創建一個相同類型的新對象,並在返回到第一個活動(在onActivitResult()方法中)後將其替換。

或者可能有更多的方法來做到這一點。

謝謝。