나는 주 업무 및 서비스를 가지고 있습니다. 주 활동은 데이터를 서비스에 준비합니다. 서비스는 데이터를 소비 한 후 mainactivity, mainactivity에 대한 요청을 브로드 캐스트하여 새로운 데이터를 준비하고 서비스에 전달합니다 ...안드로이드 mainactivity 및 서비스 흐름
mainactivity는 사용자가 데이터를 조작 할 수있게합니다. 주전원이 포 그라운드에 있지 않은 경우에 때로 사망합니다.
[문제 1] : 여기서 약간 혼란 스럽습니다. 주 활동이 아직 여기 있지만 UI 스레드와보기가 지워 졌다고 생각합니까? 그래서 UI 스레드를 사용하여 뷰에서 값을 읽고 서비스에 데이터를 보낼 수 없습니까?
[문제점 2] : 어떻게 주전원이 죽었는지 감지하고 서비스가 데이터 자체를 준비하도록 전환 할 수 있습니까?
[문제 3] : 어떻게 강제로 시스템을 죽일 수 있습니까? mainactivity 그래서 프로그램을 디버깅 할 수 있습니까?
감사
업데이트 : 그 그래프는 시간이 초과 될 수 있습니다하지만 여전히 내가 완전히 행동을 이해할 수 없다 읽어 보시기 바랍니다. 사실, 내 질문에 더 많은 것 : 작업 관리자에서 내 응용 프로그램 1 활동 및 1 서비스 및 20MB 램을 소비했습니다. 30 분 후, 내 응용 프로그램은 1 개의 활동과 1 개의 서비스를 가지고 있으며 1.5MB의 램을 소비했습니다. 분명히 뭔가가 활동에 일어났습니다. 그게 뭐죠? 주의 사항 : 내 활동은 서비스 할 데이터 준비를위한 UI Thraad 루프를 사용합니다. 중지/계속 이력서에는 UI 활동에 아무런 영향이 없습니다. 그러면 UI 스레드 활동이 언제 죽을지 어떻게 알 수 있습니까?
업데이트 : 로그 캣 테스트 (로그 메시지를 추가 할 때 onpause/중지시 /들의 OnDestroy라고 ..), 응용 프로그램의 메모리가 1.5MB에 20메가바이트에서 드롭 다운 동안 그러나, 아무도가 호출되지 않습니다.
05-21 23 : 33 : 27.709 : I/mytag (32012)
05-21 23 onResume
요청 : 33 : 30.606 : I/mytag (32012)05- onPause라고 21 내지 23 : 33 : 31.596 : I/mytag (32012) : 36 : 05.176 :
을 중지시 호출은05-21 23 지금까지 앱 매니저 20메가바이트 메모리를 사용하여 내 응용을 나타낸다] D를/skia (32012) : 글꼴 캐시에서 144K 제거 [8 entries]
05-21 23 : 36 : 05.246 : D/dalvikvm (32012) : 00 : 10.226 : GC_EXPLICIT는, 52 % 자유 4329K/8839K, 1716K 외부/2137K 1240K 해제는 54ms
05-22 00 D 일시/dalvikvm (32012) : 36 : 10.166 : GC_EXPLICIT가 933K 해제, 53 % 자유 4226K/8839K 외부 1684K/2137K는 85ms
05-22 00 일시 D/dalvikvm (814) GC_EXPLICIT는 56K, 49 % 해방 무료 2775K/5379K, 외부 1625K/2137K는
61ms 내가 30 분을 기다렸다
[이 시점까지, 응용 프로그램 관리자는 1.5MB의 메모리를 사용하여 내 응용 프로그램을 보여줍니다] 일시 정지, 나는하지 않았다 더 이상 로그캣 텍스트 , 테스트가 끝났습니다.
내 앱 메모리를 지우고 싶지만 'onpause/onstop 등'을 트리거하지 않습니다. 어떻게 감지하고 서비스에 뭔가를 할 수 있습니까? 감사합니다.
태그에 대한 활동 대신 android-activity를 사용해야합니다. – Zerkz
또한 데이터 준비를 위해 UI 스레드를 사용해야 할 필요가 있습니까? – Zerkz