2012-07-26 214 views
2

並且預先感謝您的幫助。將套接字對象傳遞給Android的另一個活動

在Android中的活動之間傳遞對象的最佳做法是什麼?我讀到了將序列化對象作爲字符串傳遞給putExtras並將其添加到捆綁包的可能性,然後再開始下一個intent。但是是一個可串行化的Socket?

我想通過插座,爲PrintWriter,BufferedReader類的實例,主要活動打開的連接和輸入/輸出流,因此在未來的意圖可以關閉等。

我也想知道是否有後是其他/更好的選擇來考慮,因爲我猜有。

謝謝。

回答

1

您必須使用公共靜態變量或使用單例模式的包裝類。

+0

感謝@SimonSays。 1)是否使用常用的靜態變量和建議這樣做?使用靜態變量有什麼缺點? 2)這兩個活動我想通過顯然擴展活動類之間的對象已經。你能給我一個例子,你將如何繞過與單身變量包裝他們與另一個類? – user1555863 2012-07-27 07:06:25

+0

1.我不會說推薦使用靜態變量,但有時它只是傳遞物體的最簡單方法。我個人,我儘量避免它,但仍然使用它來。缺點是你不知道對象什麼時候會被垃圾收集。 2.這是相反的方式。你可以將你的流對象封裝在單例中,而不是活動。 – SimonSays 2012-07-27 21:59:36

0

如果你不想啓動服務,你可以創建一個全局變量。

對於像這樣的插座創建一個Singleton模式:

public class SocketSingleton { 


private static Socket socket; 

public static void setSocket(Socket socketpass){ 
    SocketSingleton.socket=socketpass; 
} 

public static Socket getSocket(){ 
    return SocketSingleton.socket; 
    //return socket; 
} 

}

然後在代碼只是改變全局值:

 public void changeScreen(Socket socket, String ip, int port) { 
     SocketSingleton.setSocket(socket); 
     Intent i = new Intent(getActivity().getApplicationContext(), ControlActivity.class); 
     i.putExtra("ip", ip); 
     i.putExtra("port",port); 
     startActivity(i); 
    } 
相關問題