많은 안드로이드 휴대폰이 아이폰보다 더 높은 구성을 가지고 있지만, 예를 들어 대부분의 안드로이드 휴대폰은 메모리가 1GB인 반면, 아이폰 4S는 메모리가 512MB에 불과합니다. 왜 이런 일이 발생합니까? 소프트웨어 엔지니어이자 전 구글 인턴인 앤드루 먼(Andrew Munn)은 안드로이드 시스템 UI의 비효율적인 프레임워크 디자인 때문이라고 설명했다.
그러나 이 인턴인 Andrew Munn은 소프트웨어 공학 학부생입니다. 그는 Android 팀의 프레임워크 팀에서 일하지 않으며 Android 렌더링의 소스 코드를 본 적이 없으므로 그가 말한 것은 아마도 꼭 100% 사실은 아닙니다. 그리고 그는 Windows Phone 팀에서도 일했기 때문에 무의식적으로 Android에 대해 편견을 갖고 있을 수도 있습니다. 안드로이드가 왜 iOS만큼 원활한 경험을 하지 못하는지에 대한 그의 의견은 다음과 같다.
Android가 iOS만큼 원활하지 않은 이유는 Java GC가 일시정지를 유발하기 때문도 아니고 Android가 Java로 컴파일된 바이트코드를 실행하고 iOS가 네이티브 코드를 실행하기 때문도 아닙니다. 근본적인 이유는 iOS의 UI 렌더링이 채택되기 때문입니다. 실시간 우선순위이며 Android의 UI 렌더링은 기존 컴퓨터 모델의 기본 스레드의 일반 우선순위를 따릅니다.
추상적이고 이해하기 어려울 수도 있지만 아이패드나 아이폰을 이용해 사파리를 열고 시나 홈페이지 같은 복잡한 웹페이지를 로딩해 보면 된다. 절반만 로드된 경우 화면에 손가락을 대고 움직이면 모든 렌더링이 즉시 중지되고 손가락을 떼기 전까지 페이지가 계속 로드되지 않습니다.
Android 기기에서 이 작업을 반복하면 브라우저는 계속해서 페이지 로드와 HTML 렌더링을 시도하면서 동시에 멀티태스킹을 시도합니다. 따라서 Android의 경우 효율적인 이중 작업이 가능합니다. -코어 프로세서는 중요한 점으로 Galaxy S II가 매우 부드러운 이유입니다.
iOS에서는 UI 렌더링 프로세스가 절대적인 우선순위를 가집니다. 사용자가 iPhone의 터치 스크린을 터치하면 iOS의 모든 프로세스가 중지되고 UI 스레드가 모든 이벤트를 가로채며 시스템이 렌더링 UI에 사용됩니다. 사용자 인터페이스의 실시간 렌더링 우선순위를 보장하는 프로세스입니다. 안드로이드 시스템에서는 UI 렌더링 프로세스의 우선순위가 그다지 높지 않습니다. 즉, 안드로이드 폰의 화면을 터치하면 시스템의 백그라운드 프로그램이 멈추지 않고 계속 실행됩니다. 문자 메시지 확인 시스템 UI에서 얻는 리소스가 부족하여 Android 시스템이 원활하지 않습니다.
이 때문에 새로 출시된 갤럭시 넥서스와 쿼드코어 프로세서를 탑재한 EeePad Transformer Prime 태블릿도 3년 전 아이폰만큼 원활한 작동을 보장할 수는 없습니다. .미끄러운 정도에 비해 안드로이드 팀은 왜 이 문제를 근본적으로 해결하지 못하는 걸까요?
UI 렌더링 외에도 Android의 효과적인 하드웨어 가속이 부족한 것도 이유입니다. Android 휴대폰마다 하드웨어 가속에 큰 차이가 있으며 Apple은 하드웨어와 소프트웨어를 모두 만드는 유일한 핸드헬드입니다. 장치 회사 중 Apple만이 하드웨어에 소프트웨어 최적화를 삽입하여 Apple 칩 기반 장치가 전력을 절약할 뿐만 아니라 원활하게 작동하도록 할 수 있습니다.
사실 안드로이드 개발은 1세대 아이폰 출시 전부터 이미 시작됐다. 원래 안드로이드 프로토타입은 블랙베리의 경쟁자인 키보드폰을 사용한 기기로 설계됐다. 키보드가 있는 휴대폰에서는 UI 렌더링 우선순위가 그다지 중요하지 않습니다. 하지만 아이폰이 출시된 후, 안드로이드 팀은 아이폰과 경쟁할 수 있는 제품을 빠르게 출시하기 위해 안드로이드를 터치스크린 휴대폰 시스템으로 빠르게 변경했습니다. 그러나 그때쯤에는 더 이상 UI 프레임워크를 다시 작성할 수 없었습니다.
그렇게 되면 안드로이드 앱마켓의 모든 프로그램을 사용할 수 없게 되고, 이 관계는 늘 악순환에 빠지게 되기 때문입니다.
(이 인턴의 사이비 과학은 정말 잘 쓰여졌으니 여기서 반박하겠습니다)
인턴에 따르면 안드로이드 UI가 매끄럽지 못한 이유는 응답 우선순위 때문이라고 합니다. UI 처리만으로는 부족하고, Google이 이를 개선하지 않는 이유는 이미 출시된 애플리케이션에 영향을 미칠까 봐 두려워서일까요?
이 사람은 ios와 android의 프로세스 제어 메커니즘을 전혀 이해하지 못하고, ios의 ui가 가장 높은 우선순위를 갖는다는 사실도 모릅니다. (웃음, ios가 언제 가장 높은 UI를 가졌습니까? 분명히 시스템입니다. 우선순위가 가장 높은 인터럽트)) 실제로 안드로이드가 UI를 터치하면 백그라운드 프로세스가 계속 실행된다는 말도 안 되는 말을 해서 구글에서 시간을 보냈는지조차 의심스러웠다. 그가 UI 우선순위에 대해 말한 것이 합리적이라고 하더라도 우선순위를 변경한다고 해서 프로그램이 악순환에 빠질 가능성은 거의 없습니다. 안드로이드 시스템의 아키텍처를 이해하려면 그래픽 처리(우선순위에 관한 부분)를 담당하는 사람이 커널의 상위 레벨인 안드로이드 시스템의 두 번째 레이어에 위치하고 있다는 것과 안드로이드의 디자인을 알아야 한다. 다음 레이어의 종속성은 인터페이스를 통해서만 호출되며 레이어 내의 변경 사항은 레이어 외부의 동작에 전혀 영향을 미치지 않습니다.
쉽게 말하면 은행 창구에 가서 일을 할 때 외환을 처리하려면 외환 창구로 가고, 채권은 외환 창구로 가는 것과 같습니다. 은행이 귀하의 요청을 내부적으로 처리하는 방법은 귀하가 제출하기만 하면 됩니다. 은행 내부 직원의 변경 사항은 귀하의 거래 처리에 영향을 미치지 않습니다. 이 인턴의 말처럼 UI 프레임워크의 우선순위 문제가 사실이라면, 현재 안드로이드 프로그램 프레임워크를 우회할 수 있는 프로그램이 없기 때문에 구글은 기존 프로그램에 영향을 주지 않고 쉽고 직접적으로 우선순위를 높일 수 있다. UI 하위 레이어의 메소드를 직접 호출하므로, 하위 레이어의 개선으로 인해 상위 레이어에 호환성 불편이 발생하지 않습니다. 그리고 생산 비용이 증가하지 않습니다.
그런데 왜 여전히 Android가 iOS에 비해 뒤처져 있다고 느끼는 걸까요? 이건 남들이 말하는 걸 따라하다 보면 막히는 느낌인 것 같아요(많은 사람들은 개념이 공백일 때 Android가 iOS보다 느리고 iOS만큼 좋지 않다고 생각하게 되는데, 이것을 너무 많이 듣고 나면 그들의 감정은 자연스럽게 부정확해집니다.) Android가 iOS보다 열등한 이유에 대해 N가지의 "과학적, 내부자" 설명이 있을 정도로 너무 많습니다. 나는 이 문제를 변증법과 더불어 발전론적 관점에서 분석해야 한다고 생각한다.
초창기 안드로이드는 확실히 iOS만큼 최적화가 잘 되어 있지 않았습니다. 이는 제품의 디자인 컨셉과 연식 때문이었습니다(안드로이드 자체는 2007년에야 인수된 회사였고, 시스템이 이전에는 실제로 전혀 검증되지 않았습니다. 그리고 iOS는 Mac 시대부터 항상 Apple 아래 구축되었습니다. 하드웨어는 아이폰에 비해 훨씬 덜 강력하다. 게다가 개방적이고 무료이며, 다양한 제조업체가 합류했다. 부품 공급업체도 깊은 물에 빠져 제품 수준이 고르지 않다. Android와 iOS의 격차에 대한 많은 사람들의 이해는 그 당시에야 확립되었습니다. iPhone을 보면 소프트웨어나 하드웨어에 관계없이 1년에 한 대만 출시되며 공급업체 선택부터 생산까지 충분한 주기가 있습니다. 정확합니다. 신중하게 선택하세요. 즉, 안드로이드 진영은 저가형부터 고급형까지 있고, 저가형, 지저분한형이 많습니다. 소위 고급형은 적고 세련되지 않은 반면, 아이폰은 그냥 고급형입니다. 이것은 항상 좋은 것과 쓰레기를 비교하는 Tian Ji의 경마와 같습니다. 자연스럽게 입소문은 Android가 iOS만큼 좋지 않다는 광범위한 인상을 남겼습니다. 사실 이 시대의 iOS 제품에 비하면 안드로이드 제품은 아이폰만큼 좋지 못한 것이 사실이다.
그런데 최근 몇 년간 안드로이드의 하드웨어는 기본적으로 아이폰을 넘어섰는데 왜 아직도 iOS에 뒤처진다고 생각하시나요? 위에서 언급한 심리적 요인에 더해 안드로이드 자체와는 전혀 관련이 없고, OS 최적화만큼 단순하지도 않다고 개인적으로 생각합니다. 사실 하드웨어적인 문제인데 특별히 신경쓰는 사람은 없지만, 모니터의 응답속도와 비슷하다고 말하고 싶습니다.
용량성 스크린도 응답 시간이 있으며 작업 환경 전압에 대한 요구 사항이 높습니다. 일반 용량성 패널의 응답은 상대적으로 느리며 약 50~100ms에 불과하며 전압이 인가되면 응답이 더욱 느려집니다. 불안정하고, iPhone 4의 정전용량판 응답시간은 10~20ms로 그 차이가 80ms에 가까워 10분의 1초도 안 된다고 하는데 실제 경험상 이는 사람의 직관에 영향을 미칠 수 있습니다. . 또 다른 요인은 터치스크린의 유리 재질입니다. 경도가 높을수록 감쇠 계수와 마찰 계수를 기준으로 측정할 수 있습니다. 동일한 경면의 경우 경도가 높은 소재일수록 촉감이 더 부드럽습니다. 아이폰은 경도 7의 고릴라로 만들어졌습니다. 벗었을 때 렉 없이 매끄럽게 느껴집니다. 또한, 아이폰을 구입하는 대부분의 사람들은 필름에 더 많은 돈을 쓰는 경향이 있으며(저는 필름에 129를 썼습니다), 필름도 효과에 영향을 미칩니다. 모든 Android 휴대폰 중에서 Gorilla를 사용하는 휴대폰은 거의 없으며, 좋은 영화를 기꺼이 제작하려는 휴대폰은 더욱 적습니다. 아이폰보다 더 안 좋은 느낌도 듭니다.
장기간 사용해 본 개인적인 경험에 따르면 Android UI에는 실제로 인터페이스 전환 시 세부 사항과 같은 과도한 애니메이션이 부족합니다(iOS 인터페이스가 전환될 때 주의 깊게 살펴보세요. 창 이동, 제목 표시줄 및 위의 컨트롤이 모두 다른 속도로 이동하여 흐르는 물처럼 역동적이고 섬세한 느낌을 주며 작동 시 갑작스러운 느낌을 줍니다. 사실 터치적인 측면에서는 토끼와 눈에 띄는 차이는 없는 것 같아요. 그리고 분명한 느낌은 iPhone에 배경 프로그램이 있거나 많은 프로그램을 실행한 후에는 일반적인 인터페이스 전환조차 멈춘 것처럼 느껴질 것이라는 점입니다.
마지막으로 중요한 추가 사항은 iOS가 의사 다중 스레드 개발이고 Android는 프로그래밍 모델에 더 많은 관심을 기울이고 iOS는 사용자 경험에 더 많은 관심을 기울인다는 것입니다. Android는 애플리케이션 내(in-process) 렌더링(컨트롤)과 프로세스 간 렌더링(표면 플링거)을 서로 다른 모듈과 공간에 배치하므로 애니메이션 중에 스레드 전환이 너무 자주 발생합니다. 동일한 성능을 달성하려면 더 높은 성능의 칩이 필요합니다. iOS와 마찬가지로 렌더링을 조정하는 것도 매우 복잡해지기 때문에 가로 화면과 세로 화면 간 전환 시 iOS처럼 화면 회전 애니메이션이 없습니다.