2012-07-26 5 views
2

)에 전달하고 도와 주셔서 감사합니다.소켓 객체를 Android의 다른 액티비티 (

Android에서 활동간에 개체를 전달하는 가장 좋은 방법은 무엇입니까? putExtras에 의해 번들에 추가하고, 다음 인 텐트를 시작하는 것으로 직렬화 가능한 객체를 문자열로 전달할 가능성에 대해 읽었습니다. 하지만 직렬화가 가능한 소켓은 무엇입니까? 주요 활동이 연결을 열고/출력 스트림, 그래서 다음 의도 등 닫을 수 있습니다 ..에

가 나는 또한 알고 싶습니다 후

나는, 소켓,의 PrintWriter, BufferedReader로의 인스턴스를 전달하려는이 내가 생각하기에 다른/더 나은 옵션을 고려해야한다.

감사합니다.

답변

1

공용 정적 변수 또는 단일 패턴을 사용하는 래퍼 클래스를 사용해야합니다.

+0

감사 @SimonSays :

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; } 

}

그런 다음 코드에서 바로 글로벌 값을 변경합니다. 1) 정적 변수를 사용하는 것이 일반적이며이를 위해 권장됩니까? 정적 변수 사용의 단점은 무엇입니까? 2) 두 활동 모두 분명히 Activity 클래스를 확장하는 사이에 객체를 전달하고 싶습니다. 싱글 톤 변수를 가진 다른 클래스로 어떻게 래핑 할 것인가에 대한 예를 들어 주시겠습니까? – user1555863

+0

1. 정적 변수의 사용이 권장되는 것은 아니지만 가끔씩 객체를 전달하는 가장 쉬운 방법입니다. 나 개인적으로 가능한 한 피하려고하지만 여전히 경우에 사용하십시오. 단점은 객체가 언제 가비지 수집되는지 알 수 없다는 것입니다. 2. 그것은 다른 방향입니다. 당신은 싱글 톤에서 스트림 객체를 래핑 할 수 있습니다. – SimonSays

0

서비스를 시작하지 않으려면 전역 변수를 만들 수 있습니다.

는 다음과 같이 그 소켓의 싱글 톤 패턴을 만듭니다

 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); 
    } 
관련 문제