이것은 결국 귀하의 질문에 도달 할 것이지만, 먼저이 글을 쓰는 시점에 이미 제공된 다양한 답변에 대한 다양한 의견에서 제기 한 많은 문제를 다루고 싶습니다. 나는 당신의 마음을 바꿀 생각이 없습니다. 차라리 미래에이 글을 읽게 될 다른 사람들을위한 것입니다.
요점은 안드로이드가 앱 종료 시점을 결정할 수 없다는 것입니다. 그것은 반드시 사용자의 선택이어야합니다.
수백만의 사람들이 환경이 필요에 따라 애플리케이션을 닫는 모델에 완전히 만족합니다. 이러한 사용자는 단순히 웹 페이지를 "종료"하거나 온도 조절기를 "종료"하는 것 이상으로 Android 앱을 "종료"하는 것에 대해 생각하지 않습니다.
iPhone 사용자는 iPhone 버튼을 누르는 것이 앱이 종료 된 것처럼 느껴질 필요는 없다는 점에서 거의 동일합니다. 왜냐하면 많은 iPhone 앱은 앱이 실제로 종료 된 경우에도 사용자가 중단 한 위치를 선택하기 때문입니다 (iPhone 만 현재 한 번에 하나의 타사 앱을 허용합니다).
위에서 말했듯이 내 앱에는 많은 일이 있습니다 (데이터는 장치에 푸시되고 항상 있어야하는 작업 목록 등).
"항상 있어야하는 작업 목록"이란 무엇을 의미하는지 모르겠지만 "데이터를 장치에 푸시하는"것은 쾌적한 소설이며 어떤 경우에도 활동으로 수행해서는 안됩니다. 을 통해 예약 된 작업을 사용하여 AlarmManager
최대의 안정성을 위해 데이터를 업데이트하십시오.
Google 사용자는 전화를 걸고 전화를받을 때마다 Android에서 앱을 종료하기로 결정하고 로그인 할 수 없습니다.
이를 다루는 많은 iPhone 및 Android 응용 프로그램이 있습니다. 일반적으로 사용자가 매번 수동으로 로그인하지 않고 로그온 자격 증명을 보유하기 때문입니다.
예를 들어, 응용 프로그램을 종료 할 때 업데이트를 확인하려고합니다
그것은 모든 운영 체제에서 실수입니다. 아시다시피, 응용 프로그램이 "종료"되는 이유는 OS가 종료되고 업데이트 프로세스가 중간에 실패하기 때문입니다. 일반적으로 이것은 좋지 않습니다. 시작시 업데이트를 확인하거나 예약 된 작업을 통해 완전히 비동기식으로 업데이트를 확인하고 종료하지 마십시오.
일부 의견은 뒤로 버튼을 눌러도 앱이 전혀 종료되지 않는다고 제안합니다 (위의 질문에서 링크 참조).
BACK 버튼을 눌러도 "앱이 종료되지 않습니다". 사용자가 BACK 버튼을 눌렀을 때 화면에 표시된 작업을 마칩니다.
사용자가 종료하고 싶을 때만 종료해야합니다. 안드로이드에서와 같이 동작하는 앱을 작성할 수 없다면, 안드로이드를 실제 앱을 작성하는 데 사용할 수 없다고 생각합니다 = (
그러면 웹 애플리케이션도 마찬가지입니다. 또는 모델을 올바르게 이해하면 WebOS (아직 게임 할 기회가 없었습니다). 이 모든 것에서 사용자는 아무것도 "종료"하지 않고 그냥 떠납니다. iPhone은 현재 한 번에 한 가지만 실행할 수 있다는 점에서 약간 다릅니다 (몇 가지 예외 제외).
응용 프로그램을 실제로 종료 할 수있는 방법이 있습니까?
다른 사람들이 말했듯이 BACK을 통해 사용자 또는을 통해 코드를 통해 finish()
현재 실행중인 활동을 닫을 수 있습니다. 사용자는 일반적으로 웹 응용 프로그램을 사용하기 위해 "종료"옵션이 필요한 것보다 적절하게 작성된 응용 프로그램에 대해 다른 것을 필요로하지 않습니다.
정의상 두 응용 프로그램 환경이 동일하지 않습니다. 즉, 새로운 환경이 생겨나 고 다른 환경이 묻히면 환경의 트렌드를 볼 수 있습니다.
예를 들어 "파일"개념을 제거하려는 움직임이 커지고 있습니다. 대부분의 웹 응용 프로그램은 사용자가 파일을 생각하도록 강요하지 않습니다. iPhone 앱은 일반적으로 사용자가 파일을 생각하도록 강요하지 않습니다. Android 앱은 일반적으로 사용자가 파일을 생각하도록 강요하지 않습니다. 등등.
마찬가지로 앱을 "종료"한다는 개념을 제거하려는 움직임이 커지고 있습니다. 대부분의 웹 응용 프로그램에서는 사용자가 강제로 로그 아웃하지 않고 일정 시간 동안 사용하지 않으면 암시 적으로 사용자를 로그 아웃합니다. 안드로이드와 마찬가지로 아이폰과 웹 OS도 마찬가지다.
이를 위해서는 비즈니스 목표에 중점을두고 이전 애플리케이션 환경과 연계 된 구현 모델을 고수하지 않고 애플리케이션 설계에 더욱 중점을 둡니다. 이를 수행 할 시간이나 성향이없는 개발자는 기존의 정신 모델을 깨뜨리는 새로운 환경에 좌절 할 것입니다. 이것은 어느 환경의 결점도 아닙니다. 그 이상의 폭풍이 산을 통과하는 것이 아니라 산의 결점 이상입니다.
예를 들어 Hypercard 및 Smalltalk와 같은 일부 개발 환경에서는 응용 프로그램과 개발 도구가 하나의 설정으로 통합되었습니다. 이 개념은, 예를 들어 (응용 프로그램에, 많은 언어 확장의 외부를 잡을하지 않았다 VBA를 에 엑셀 , AutoCAD에서 리스프 ). 따라서 앱 자체에 개발 도구가 있다고 가정 한 정신 모델을 개발 한 개발자는 모델을 변경하거나 모델이 적용되는 환경으로 제한해야했습니다.
당신이 쓸 때 :
내가 발견 한 다른 지저분한 것들과 함께 Android 용 앱 개발이 일어나지 않을 것이라고 생각합니다.
그것은 당신을 위해 지금 당장 최고인 것처럼 보일 것입니다. 마찬가지로, Android에서보고 한 동일한 문제 중 일부는 웹 응용 프로그램에서도 발견 될 수 있으므로 (예 : "종료"없음) 응용 프로그램을 웹에 이식하려고 시도하지 말라고 조언합니다. 또는, 반대로, 언젠가 경우 어떻게 포트 웹에 응용 프로그램을, 당신은 웹 응용 프로그램의 흐름이 안드로이드에 대한 더 적합하다는 사실을 발견 할 수있다, 당신은 그 시간에 안드로이드 포트를 다시 방문 할 수 있습니다.