2011-12-01 6 views
1

내 애플리케이션에서 일부 값 (Google지도에서 운전 경로를 검색하는 것과 같이)을로드하는 데 시간이 오래 걸릴 수 있습니다. 이로 인해 '대기'경고 대화 상자가 시작됩니다. 강제 종료 버튼을 클릭하면 어떻게되는지 알 수 있습니까? 강제 닫기가 활성화되면 어떤 코드가 실행됩니까? "Wait"알림 대화 상자가 나타나는 시간을 수동으로 조정할 수 있습니까? 이 대화 상자가 표시되는 기본 시간은 얼마입니까?Android : 강제 종료 후 활동주기

답변

2

가끔은 짜증나는 일이지만, 프로그래머가 UI가 멈추지 않고 원활하게 실행되도록하기 위해 (의도적으로) 내 의도적으로 만들었습니다. 지금 당장은 문서를 찾을 수는 없지만 if 나는 정확하게 약 4 초를 기억한다 .. 당신은 단지 당신의 값이 2 초 이상 걸리면 비동기로 로딩되어야한다는 것을 의미하는 앱의 UI 동결이나 지연이 없음을 확인할 필요가있다.
주 활동에서 무거운 하중을 이동하여 비동기로 실행해야합니다 (async task 또는 thread 사용).

+0

Google지도에서 운전 경로를 찾으려고하면 주로 발생합니다 !! – freshDroid

+0

예 .. 온라인 데이터 가져 오기가 비동기식으로 수행되어야합니다. 사용자 연결이 얼마나 강한 지 또는 서버에서 데이터를 가져 오는 데 얼마나 오래 걸릴지 모르기 때문에 데이터 대기를 기다리는 사용자 대기 (UI 고정)를 할 수 없습니다. 스레드 또는 비동기 작업으로 인해 주 활동이 데이터를 기다리지 않습니다. 주요 활동이 멈추지 않는 한로드하는 데 시간이 걸릴지라도 앱이 다운되지는 않습니다. – Joe

+0

강제 종료 후 시작한 페이지를 관리 할 수 ​​있습니까? – freshDroid

0

내가 아는 한, 대화 상자가 열리면 Android OS가 인계 받아 사용자의 프로세스를 종료합니다. 이것이 정상적인 경우 스택 덤프를 사용하여 앱 충돌이 무엇인지 파악해야합니다.

1

Android 스레딩에서 this article을 읽어야합니다.

주 스레드에서 장기 실행 작업을 수행하고 싶지 않습니다. 작업이 1 초보다 오래 걸리려면 AsyncTask을 사용하거나 작업을 수행하기 위해 자신 만의 백그라운드 스레드를 만들어야합니다.

0

이벤트 스레드에서 시간 소모적 인 초기화를 수행하면 안됩니다. 초기화 작업을 수행하려면 백그라운드 스레드 (또는 AsyncTask)를 시작해야합니다. 가이드 주제 Designing for Responsiveness을 참조하십시오. 후속 조치는 Processes and ThreadsPainless Threading을 포함해야합니다.

+0

강제 종료 이후에 시작된 페이지를 관리 할 수 ​​있습니까? – freshDroid

+0

@freshDroid - 그렇게 생각하지 않습니다. OS가 인계 받아 앱을 죽이는 중입니다. –

+0

유일한 방법은 발사하는 모든 경우를 피하는 것입니다. – freshDroid

관련 문제