RobotActivity를 상속한 2가지의 액티비티가 있습니다.
RobotOneActivity, RobotTwoActivity
RobotOneActivity에서 특정 이벤트시에 아래 코드를 실행하면..
finish();
startActivity(new Intent(this, RobotTwoActivity.class));
RobotOneActivity의 onDeactivated()가 호출되어야 하는 시점에
RobotTwoActivity의 onDeactivated()가 호출 되는 것 같습니다.
해서..화면은 RobotTwoActivity로 넘어 갔지만 RobotTwoActivity에서 로봇제어가 불가능 합니다.
어쩔수 없이.. RobotOneActivity의 onDeactivated()가 호출 된 다음에 startActivity();를 합니다만..
화면 전환이.. 영 어색해서 말이죠.
혹시 제가 뭘 잘못한걸까요?
시료기는 갤3 입니다.
ps/
아래 두 메서드 순서 변경해도 증상은 똑같습니다.
finish();
startActivity(new Intent(this, RobotTwoActivity.class));
RobotActivity는 처음 배우시는 분, 쉽게 개발하고자 하는 분들을 위해 만들어진 것일 뿐 만능은 아닙니다.
핵심은 SmartRobot이라는 클래스이지 RobotActivity가 아닙니다.
RobotActivity는 론처와의 연결을 맺고 끊는 걸 하기 위해 SmartRobot 클래스를 어떻게 호출하는지 보여주는 예제일 뿐입니다.
두 개의 액티비티를 사용하실 때는 RobotActivity를 사용하지 마세요.
RobotActivity에 보시면 onStart에서 activate하고 onStop에서 deactivate 하도록 되어 있는데요
액티비티의 콜백함수가 호출되는 순서는
첫번째 액티비티 --> startActivity --> 두번째 액티비티 onStart --> 첫번째 액티비티 onPause --> 두번째 액티비티 onResume --> 첫번째 액티비티 onStop
이기 때문에 두번째 액티비티의 onStart에서 activate 한 것을 첫번째 액티비티의 onStop에서 deactivate 해버립니다.
즉, 연결을 끊어버리는 것이죠.
activate와 deactivate를 각각 onResume과 onPause에 넣으면 문제가 없는데 onStart와 onStop에 넣은 이유는
구글 음성인식과 같이 다른 액티비티가 일부 위에 떠버리면 onPause가 호출되어 버리기 때문입니다.
RobotActivity에 구현되어 있는 것을 그대로 따라서 적용하시되
activate와 deactivate를 원하시는 장소에 넣어주시면 됩니다.
특별히 다른 액티비티가 일부만 위에 올라올 일이 없다면 onResume과 onPause에 넣으시면 됩니다.
제가 생각하고 있는 게 맞는지 모르겠네요...
이전에 JeiKei 님이 질문주신 내용과 같은 내용이신가요?
http://www.androidpub.com/index.php?mid=android_dev_robot&page=3&document_srl=2395433
로봇 액티비티를 두개 사용하시려는 의도가 맞다면
두번째 액티비티에서 extends RobotActivity를 하셨다면
extends Activity 사용하시고
사용하고 싶으신 리스너같은 게 있다면 추가적으로 implements를 사용하시면 됩니다.
그리고 라이브러리 안에 있는 RobotActivity 파일 함수들을 MainActivity로 복사해서 붙여넣기 하시면 됩니다.
아래 내용처럼 되겠죠?
public class MainActivity extends Activity implements SmartRobot.Callback, Device.DeviceDataChangedListener, OnCompletedListener
자세한 사항은 위의 링크에 설명되어 있을껍니다.
만약 위의 방식으로 했는데도 두번째 로봇연결에 문제가 생긴다면
조금 더 질문을 자세하게 해 주십시요.
저도 처음에 두개로 로봇액티비티를 사용하다
또 다른 라이브러리를 사용하기 위해 위의 방법으로 처리하면서
액티비티를 하나만 사용하였습니다.
그럼 마지막까지 힘내시기 바랍니다.