현재 액티비티를 여러개 사용하여 어플리케이션 제작하는 방식으로 생각을 하고 있습니다만
테스트 해본 결과 액티비티를 두개 띄우면 onInitialized 자체가 호출 되지 않는 것을 확인 하였습니다.
의도적으로 액티비티 하나에서만 로봇이 작동되게 되있는건가요?
아니면 여러개의 액티비티로 왔다갔다 하면서 할 수 있는 방법이 있는지 궁금합니다.
즉, RobotActivity 를 상속받은 클래스 A, B가 있을 때
A에서 startActivity(B)를 해도 로봇이 문제없이 작동할 수 있는 방법을 알고 싶습니다.
감사합니다.
지금 드는 생각은...
라이브러리 수정은 별로 의미가 없는 듯 합니다.
A의 onStop이 나중에 호출되니까 SmartRobot.deactivate가 나중에 호출되어 버려서 결국 연결이 끊길테니까요.
그렇다고 onPause에서 호출되도록 하면 화면이 사라지는 게 아니라 약간만 가려져도 연결이 끊어질테니 더더욱 안되구요. (일반적인 상황에서는)
그래서 아래와 같이 하시는 것이 더 좋을 것 같습니다.
RobotActivity를 상속받지 마시구요
RobotActivity에 구현된 것을 그대로 다시 구현하시되
onStart에 있는 SmartRobot.activate를 onResume으로 옮기시고
onStop에 있는 SmartRobot.deactivate를 onPause로 옮기세요.
이렇게 하면 A의 onPause가 B의 onResume 보다 먼저 호출되니까
A의 onResume --> SmartRobot.activate() --> startActivity(B) --> A의 onPause --> SmartRobot.deactivate() --> B의 onResume --> SmartRobot.activate 순으로 진행될 거예요.
그렇다고 A에서는 SmartRobot.activate 만 호출하고 B에서 SmartRobot.deactivate 호출하도록 하지는 마세요.
A에서 B로 안 가고 그냥 앱을 종료할 수도 있으니까요.
혹시 더 좋은 의견 있으시면 알려 주세요.
말씀하신대로 RobotActivity 클래스를 복사한 새 클래스에서
onPause()에서 SmartRobot.deactivate
onResume()에서 SmartRobot.activate로 수정 후
해당 클래스를 상속 받아서 어플리케이션을 작성하니까 아직까지는 문제없이 잘 됩니다.
감사합니다~
위와 같이 하다보니 문제점을 발견하여 답글을 남깁니다.
onPause()에서 무조건 deactive 를 호출 하다 보니 실제 런쳐와 통신하고 있지 않을 때,
어플을 실행 시킨 후, 종료 하면 에러가 발생하면서 어플이 종료됩니다.
그래서 onResume에서 실행되는 active 메소드가 boolean 으로 리턴 값을 같길래 이것을 체크하면 되겠다 싶었는데
계속 타고 가보니 무조건 true를 리턴 하는 형태로 되있더군요.
그래서 최종적으로는 deactive 메소드에 try catch로 잘 종료되게 보이게끔 :D 하는 방식으로 마무리 지었습니다.




의도적으로 하나에서만 되도록 하지는 않았습니다. ^^;;;
RobotActivity의 onStart에서 SmartRobot.activate 호출할 거고 onStop에서 SmartRobot.deactivate 호출할텐데요
음... A의 onStop 보다 B의 onStart가 먼저 호출되기 때문에
결국 SmartRobot.deactivate 호출되기 전에 SmartRobot.activate가 호출되서 그런 것 같은데요
즉, A의 onStart --> SmartRobot.activate 호출 --> startActivity(B) --> B의 onStart --> SmartRobot.activate 호출 --> A의 onStop --> SmartRobot.deactivate 호출
문제네요.
일단은 startActivity(B) 하시기 전에 SmartRobot.deactivate 호출해 주면 onInitialized는 호출됩니다만
그 후 바로 A가 사라지면서 SmartRobot.deactivate를 호출해 버리기 때문에 동작이 안될 거예요.
이건 1.3.1에서 수정해야겠네요.
1.3.1이 이번 주에 배포될텐데 다행히 배포되기 전에 알려주셔서 감사합니다.
수정하도록 할께요.
RobotActivity는 작업을 간단히 하기 위해 제공해 드리는 건데요
RobotActivity에서 하는 작업을 각 액티비티에서 직접 해주면 (RobotActivity 상속 받지 않고)
현재 라이브러리에서도 원하시는 작업을 할 수 있긴 합니다.
근데 좀 불편하시겠죠? 수정해 볼께요.