Tidal now plays nice with Amazon Fire TV as well as Android Auto

자신을 즐겁게하는 것은 훨씬 쉬워졌습니다 Tidal은 Android Auto 및 Amazon Fire TV 및 Fire 용 새 앱을 출시했습니다

TV 스틱 조수 회원은 이제 대형 스크린에 최적화 된 맞춤형 Fire TV 인터페이스를 제공합니다 Android Auto 호환 차량이있는 사람들은 좋아하는 음악을 확인할 수 있습니다 플랫폼을 사용할 수 있습니다 Fire TV의 "홈"화면으로 이동하면 선별 된 비디오 재생 목록 및 콘서트를 포함하여 플랫폼의 최신 콘텐츠, 라이브 스트리밍, 뮤직 비디오, 앨범, Podcast 등

이름에서 알 수 있듯이 새로운 '내 컬렉션'화면이 있습니다 자신이 좋아하는 콘텐츠로 개인화했습니다 또한 사용자가 Tidal의 카탈로그를 활용할 수 있도록 최적화 된 검색 기능이 있습니다 5 천만 개가 넘는 트랙을 제공하거나 스트리밍 서비스에서 원본 콘텐츠를 시청할 수 있습니다 HD 품질로 볼 수있는 라이브 및 주문형 콘서트, 뮤직 비디오 등이 있습니다

Fire TV와 Fire TV Stick을 통해 제공됩니다 Fire TV "Apps"섹션을 통해 앱을 다운로드하거나 TV 검색을 사용하여 찾으십시오 수단 새로운 Android Auto 기능 (400 가지가 넘는 다른 기능과 호환 가능) 자동차 모델), Android 50 이상의 드라이버는 Tidal에 액세스 할 수 있으며 자동차

필요한 것은 USB 케이블뿐입니다 이 통합은 회원들이 좋아하는 음악, 팟 캐스트, 및 기타 콘텐츠를 차량 대시 보드에서 바로 볼 수 있습니다 "My Collection"섹션에 대한 액세스는이 인터페이스에서 매우 간단합니다 즐겨 찾기 재생 목록, 앨범, 트랙, 아티스트 등을 다운로드 할 수 있습니다 여행 중에 새로운 것을 찾고 있다면, 체크 아웃 할 수 있습니다

"탐색"섹션을 통해 새롭고 최고의 앨범, 팟 캐스트 및 신중하게 큐 레이 티드 재생 목록을 찾습니다 장르를 기반으로합니다 Tidal은 방금 Fire TV와 Android Auto에 가입했지만이 서비스는 통합을 자랑합니다 Apple TV 및 Android TV, Apple CarPlay, Sonos를 통해 직접 제어 기능을 제공합니다 음악을 듣고 싶다면 Tidal이 여기에 있습니다

조금 더 쉬워

Integrating Google Maps API v2 with Android Part-1

안녕하세요, 저는이 에피소드에서 Ashok Kumar입니다 우리는 어떻게 통합 할 것인가? Android 애플리케이션 용 Google지도에서 필요한 애플리케이션을 시작할 수 있습니다

안드로이드에 대한 경험이 있으니 갖고 계시다면 많이 도와 드리겠습니다 이미 Google지도에서 작업 한 다음이 동영상에 이점이 추가되므로 두 가지를 기억해야합니다 Google 개발자 콘솔 설치 및 실행 및 Android Studio 시작 내가 가지고있는 저장소에는 다른 것들이 있습니다지도와 관련된 두 개의 응용 프로그램이 있습니다 많은지도 관련 자료를 이해할 수 있으므로 코딩부터 시작하겠습니다

모두를위한지도라는 프로젝트 여기에 Google지도 활동을 만드는 대신에 빈 활동을 만들 것입니다 학습자는 Google지도 활동이 처음부터 시작하는 것이 좋습니다 아직 버그가 있으며, 모든 오류가 발생하여 모든 것이 준비되면 필요할 때가 있습니다 Google Play 서비스를 Android 앱에 통합하여이 기능이 필요합니다 Playservices 의존성, 당신이 gradle 빌드 시스템에 대한 의존성을 찾고 싶다면 다음 http://gradleplease

appspotcom 멋진 당신이 피카소를 원한다면 아주 멋진 웹 도구 예제 당신이 gson을 원한다면 피카소의 의존성을 분명히 얻을 수 있습니다 이 도구를 사용하여 다른 gradle 종속성을 얻을 수있는 것과 비슷한 gson 종속성을 얻을 수 있습니다 그래서 프로젝트는이 TextView를 삭제하려고하는데 나는 내 gradle 의존성을 추가 할 것입니다 com

googleandroidgms : play-services : 750은 최근 버전입니다

우리는 API 키가 필요한 두 가지를 정렬해야합니다 Google지도 서버가 Android 용지도를 푸시합니다 API 키를 기반으로 어떻게 작성합니까?이 https://consoledevelopersgoogle

com으로 이동하십시오 이 아래쪽 화살표를 사용하여 프로젝트를 만들면 프로젝트 제목이 생기고 안드로이드 키를 만들 수 있습니다 안드로이드 키를 만들기 전에 API 및 인증 섹션에서 API로 이동하십시오 Google지도 및 Android API로 이동해야합니다 이 확인란이 활성화되어있는 것처럼 보이기 때문에 활성화 된 API가 비활성화 된 이유가 표시됩니다

따라서 API를 사용 중지하면 API가 표시됩니다 그게 어떻게 작동하는지 일단 API가 활성화되면 새로운 안드로이드 키를 만들면 어떻게 만들 수 있을까요? 그래서 우리는 시스템 터미널 따라서 keytool을 사용하여 keytool은 보여줄 자바 도구입니다 지문 몇 명령은 비디오 아래에 동봉되어 있습니다 시스템을 가져 오는 것입니다 sha1 지문 그래서 이것은 우리에게 sha1 지문을 줄 것입니다

이 지문을 복사하여 안드로이드 키 대화 상자 안의 콘솔에 붙여 넣으십시오 그것을 ';'으로 분리하십시오 매니페스트에서 패키지 주소 복사 그렇게하면 API 키가 생성됩니다 이 작업이 완료되면 매니페스트 파일을 구성해야합니다 이 메타 데이터 태그가 항상 액티비티 태그에도없는 애플리케이션 태그 안에 있는지 확인하십시오

그리고 약간의 변경은 패키지 주소를 yourpackge 자리 표시 자로 복사하고 있는지 확인해야합니다 그리고 인터넷 사용 허가를 외부 저장소 쓰기 허용 거친 위치 미세 위치 퍼미션 그리고 당신은 OpenGL에 대한 허가를 줄 것입니다 그렇게 됐어 메타 데이터 태그에 api 키를 붙여 넣습니다

우리의 매니페스트가지도를 수신하도록 구성되었습니다 한 번 완료되면 조각 컴패니언 만들기 그래서 그것을 컴파일 할 수 있습니다 너는 볼 수 있어야한다 그래서 일단 컴파일되면 그것은 대화를 줄 것이다 장치를 선택하는 방법 나는 달리기 장치를 선택할 것이다

그리고! 로드 중 APK 및 그로드 된 그래서지도가 성공적으로로드되었습니다

How to Add/Install Iphone X Notch in Your Android Smartphone – 2018

이 스마트 폰에서 모든 스마트 폰이 될 수 있습니다 이 노치를 추가 할 수있는 곳 신청이 필요하다

그냥 가게에 가서 수색 그 큰 X 전화 첫 번째 응용 프로그램을 설치 한 후 X 노치 나는 이미 그것을 설치했다 이 응용 프로그램에서 노치를 사용자 정의 할 수 있습니다 여기에서 켜기 만하면됩니다 골짜기 너는 내가 여기이 크기와 너의 크기를 증가시킨 것을 볼 수있을 때마다 여기에서부터 둥근 좌표를 조정할 수있다 모퉁이가왔다 에서 반올림 한 4 개의 모서리와 원하는 모서리 수를 선택할 수 있습니다

좋아요, 그 다음엔 메모 크기를 늘리거나 줄일 수 있습니다 과 그런 다음 메모 색상을 선택할 수 있습니다 이 강도가 바뀌고 색상 모드가 바뀌고 있음을 알 수 있습니다 좋아, 여기에서 색상과 색상을 변경할 수 있습니다 오늘은 그게 전부입니다

당신이 비디오를 즐겼기를 바랍니다 동영상을 즐긴 경우 버튼처럼 누르십시오 채널 구독을 잊지 마세요 보고 주셔서 감사합니다

Modern Android development: Android Jetpack, Kotlin, and more (Google I/O 2018)

[음악 재생] 안녕, 안녕 다른 이야기에 오신 것을 환영합니다

현대 Android 개발에 오신 것을 환영합니다 나는 우리가 시작하기 전에, 이 태양은 나보다 훨씬 밝다 그래서 우리는 이것을해야 할 수도 있습니다 그래서 우리는 안경을 끼울 수 있습니다 슬라이드를 보지 않거나 안경을 착용하지 마십시오

그리고 아무것도 보지 마라 그래서 재미있을 것입니다 CHET HAASE : 오늘이 일이 어떻게 진행되는지 살펴 보겠습니다 현대 Android 개발에 오신 것을 환영합니다 나는 안드로이드 툴킷 팀의 Chet Haase입니다

Romain Guy : 저는 Android 프레임 워크 팀의 Romain Guy입니다 뭔가를 내리십시오 CHET HAASE : 그리고 우리는 많은 것들에 대해 이야기 할 것입니다 이미 알고 계시 겠지만 우리에게 일어났습니다 우리가 당신에게 조언과 정보를 어떻게 제공했는지 오래 동안 안드로이드를위한 좋은 앱을 개발할 수 있습니다

그리고 그 정보는 수년에 걸쳐 변했습니다 새로운 기능, 새로운 API, 플랫폼의 새로운 성능, 모든 종류의 것들 그리고 약간 혼란 스럽습니다 정보 검색을 할 수 있습니다 일부 문서 사이트에서도 가능합니다

정말로 정보를 얻지 못한다 현재 많은 상황에 적용됩니다 그래서 우리는 그것을 모두 함께 포장하고 싶었습니다 2018 년에 중요한 일들에 대한 우리의 견해가 있습니다 Android에 대해 생각해보십시오

ROMAIN GUY : 올해 안드로이드는 10 년, Chet가 말했듯이, 시대에 뒤 떨어진 많은 정보가 있습니다 때로는 스택 오버플로에 대한 블로그를보고, 누군가 뭔가에 대해 정말로 화가났다 우리가 10 년 전에 말했던 화 내지 마 괜찮아 모든것은 변한다

상황이 진화합니다 우리가 당신을 싫어하기 때문이 아닙니다 우리가 틀렸기 때문이 아닙니다 그것은 다른 시간 이었기 때문입니다 – 다른 필요, 다른 장치 그래서 우리는 그 중 일부에 대해 이야기 할 것입니다

차이점을 이해하고 있는지 확인하십시오 사물을하는 현대적인 방법 그리고 일을하는 오래된 방법, 우리는 슬라이드에 약간의 힌트가있다 따라서 슬라이드 중 일부는 이와 같이 보일 것입니다 우리가 시작하자 이제 타임 라인을 살펴 봅시다

이것은 일종의 안드로이드 역사입니다 2008 년에 10이 나왔다가 분명히, 우리는 몇 년 동안 많이하지 않았다 [웃음] 나는 거기에서 무슨 일이 일어나고 있는지 모른다 나는 거기에 넣을 것들을 생각할 수 없었다

최적화, 최적화, 최적화 그리고 나서 Android Studio가 나왔습니다 그게 뭐야? ROMAIN GUY : 웹에 따르면, 우리는 나쁜 API를 개발하는 데 바빴다 [웃음] CHET HAASE : 분명히, 그것들은 당신이 원하는 것이 아니 었습니다 그래서 우리는 지난 몇 년 동안 더 잘 해냈습니다

그래서 Android Studio가 나왔고 Eclipse에서 이제 Android Studio에 더 풍부한 기능을 구축했다 우리가 그 당시에 할 수 있었던 것보다 예술이 나왔다 그것은 KitKat에서 기본적으로 꺼졌으며 Lollipop에서만 실행되는 런타임입니다 우리의 권장 사항 중 일부에서 보게 될 것입니다

정말로 변화했기 때문에 거기에서, 시간이 지남에 따라, 우리가 당신을 바라 보는 방식 코드를 작성해야합니다 사전 Dalvik 정보가 꼭 필요하지는 않습니다 예술 세계에 적용한다 Recycler보기가 해제되었습니다 List의 더 나은 버전이기 때문에 중요합니다

더 많은 유연성을 가진보기 그러나 또한 우리는 부품을 출시하기 시작했습니다 연결 라이브러리에서 연결이 끊어졌습니다 플랫폼 릴리즈에서 이 새로운 기능을 사용할 수 있습니다 모든 릴리스에서 애플리케이션에서 네가 신경 써 줬어

잠시 후, 우리는 Constraint Layout Android Studio에 내장되어 있습니다 반대로 실제로 API를 디자인하는 더 풍부한 방법 XML을 직접 타이핑하는 다양한 방법을 제공합니다 코 틀린 – 작년에 나온 것 같아요 나는 모른다 일부 IO 회의 또는 뭔가

아키텍처 구성 요소 – 이는 작년에 발표되었습니다 가을에 10 새로운 일을하는 방식 해결하려고하거나, 적어도 도움을줍니다

안드로이드와 관련된 많은 복잡한 문제들, 커뮤니티로부터 피드백을받는 것 이 API를 사용하여 당신을 쉽게 해줍니다 그것이 전체 목표입니다 Studio Profilers, 훨씬 더 풍부한 방법 성능 측정 항목이 실제로 무엇인지 알아 내기 위해 귀하의 응용 프로그램에 대한 KTx, 나온 확장 라이브러리 몇 달 전에 코 틀린에게 그리고 최근 페이징 라이브러리가 나왔습니다

이번 주에 10을 기록했습니다 그래서 이것은 일종의 일종의 범위입니다 그것은 시간이 지남에 일어났습니다 나는 2008 년과 2013 년 사이에 더 많은 일이있을 것이라고 확신합니다

나는 그것이 무엇인지를 기억할 수 없다 알았어 우리는 도구로 시작할 것입니다 다음은 당신이 알고있는 도구입니다 이 도구 인 Hierarchy Viewer를 얼마나 많이 사용하셨습니까? 오, 꽤 잘됐다

모두는 아니다 그래서 그것은 Hierarchy Viewer라는 도구였습니다 그것은 SDK의 일부입니다 독립형 애플리케이션이었습니다 그 전에 실제로 다른 버전이있었습니다

그게 내가 원래 주말에 쓴 것이 었어 플랫폼을 최적화하기위한 디버깅 도구가 필요했기 때문입니다 그리고 웬일인지, 우리는 SDK에서 그것을 출하하기 시작했다 가장 빠른 도구는 아니 었습니다 그것은 가장 좋은 도구가 아니 었습니다

사실,이 사람은 우습게도, 실제로 자고있는 시간을 많이 보내고있었습니다 그들의 책상에서 그것은 매우 흥미 롭습니다 전에는 그 기술을 전혀 사용하지 않았습니다 그것은 효과가 없었습니다

이제 우리는 그것을 훨씬 더 나은 것으로 대체했습니다 레이아웃 검사기 (Layout Inspector) Android Studio의 일부입니다 좋은 장점 중 하나는 한 번에 여러 검사 훨씬 더 빠릅니다

따라서이 도구를 사용하지 않았다면 사용하십시오 그것은 당신의 계층 구조를 분석하는 매우 쉬운 방법입니다 임베딩 및 마지 닝과 같은 다양한 디버깅, 심지어는 실적이 좋지 않을 수도 있습니다 서로 겹친다 코드를 프로파일 링하는 오래된 방법이 또 하나 있습니다

이것을 추적보기라고합니다 따라서 Trace View는 이미 존재하는 도구입니다 2007 년에 Android 팀에 합류했을 때 주변에있었습니다 꽤 오랫동안 여기에서 우리는 이클립스 내부의 동작을 봅니다

이전에는 독립형 도구였습니다 Trace View에서 우리가 가진 문제점 중 하나는 원래 버전은 계장 된 프로파일 러였습니다 그래서 많은 오버 헤드가있었습니다 그것은 호출 된 모든 메소드에서 실행 중입니다 그것은 해석 모드에서 실행 중이었습니다

그래서 그 숫자를 정말로 믿을 수는 없습니다 그래서이 방법은 3 밀리 초가 걸렸습니다 그건 사실이 아니야 그 방법은 실제로 그것보다 훨씬 빠르다 당신이 할 수있는 유일한 일은 상대 시간을 비교하는 것입니다

다른 방법들 사이 심지어 방법이 네이티브 코드를 호출하면 네이티브 코드가 영향을받지 않습니다 그래서 네이티브 코드를 호출하는 모든 메소드 숫자가 너무 잘못 되었기 때문에 비뚤어졌습니다 수년에 걸쳐 샘플링을 추가했습니다 이 도구에 프로파일 링

하지만 여전히 사용하기가 어려웠습니다 우리 중 몇 명만이 내부적으로 사용하고있었습니다 왜냐하면 그것은 그렇게 위대하지 않았기 때문입니다 몇 년 후 다행히 Systrace를 도입했습니다 따라서 Trace View를 통한 Systrace의 큰 이점 당신에게 포괄적 인 시각을 제공한다는 것입니다

전체 시스템의 추적보기는 얼마나 많은 시간을 알려줍니다 애플리케이션 내부의 모든 코드 라인에 지출하고 있으며, 원래 하지만 때로는 성능 문제 시스템의 다른 곳에서 왔습니다 어쩌면 너는 무언가에 막혔을거야 그것은 다른 과정에 있습니다

그래서 Systrace는 당신에게 필요한 견해를 제공합니다 그 전에 우리는 완전히 눈이 멀었습니다 이제는 새로운 프로파일 러가 있습니다 Android Studio에 도입되었습니다 나는 그들이 3

2 또는 31의 일부라고 생각한다 나는 정말로 기억하지 않는다 그러나 프로파일 러 탭으로 이동하면, 당신은 CPU의 실시간 그래프를 보게 될 것입니다 응용 프로그램과 추억 사용 [INAUDIBLE] 귀하의 응용 프로그램의

그리고 CPU 그래프를 더블 클릭하면, 당신은 그 견해에 도달 할 것입니다 Trace View와 매우 유사합니다 다시 말하지만 훨씬 빠르며 네이티브 코드 프로파일 링, 인스트루멘털 프로파일 링, 샘플링 프로파일 링 및 심지어 Systrace 이것은 지금부터 사용해야 할 도구입니다 이것이이 그래프의 모습입니다

그래서 우리는 이제 4 개의 그래프를 믿습니다 우리는 CPU 1, 메모리 1, 네트워크 1, 에너지 1 내가 네트워크를 사용하지 않아서 무엇을위한 서버인지는 확실하지만 너희들이 그걸 이해하고 그것을 잘 활용할 것입니다 그리고 그것이 마치 CPU 프로파일 러에 들어갑니다 그래서 당신은 화염 그래프를 얻습니다 데이터를 분석하는 여러 가지 방법이 있습니다

제가 좋아하는 것은 화염 그래프입니다 모든 기능을 채색 할 것입니다 서로 다른 색상의 전화 그들이 얼마나 많은 시간을 들여야하는지 붉은 색이나 진한 오렌지색으로 보이는 것들 애플리케이션 내부의 병목 현상입니다 따라서 응용 프로그램 내에서 드릴 다운하는 아주 쉬운 방법입니다

병목 현상을 식별 할 수 있습니다 이것이 네이티브 프로파일 러입니다 Android 80부터 사용할 수 있으며, 그래서 그것을 실행하려면 오레오 이상이 필요합니다 그리고 나는 새로운 메모리 프로파일 러에 대해 간략하게 언급했다

그래서 우리는 메모리 추적을하기 위해 DDMS라는이 도구를 사용합니다 다시 말하지만, 그것은 독립형 도구였습니다 Eclipse 플랫폼에서 빌드되었습니다 그렇지 않기 때문에 사용하기가 정말 어려웠습니다 신분증의 일부

어떤 시점에서 ID에 다시 추가했습니다 그리고 그것은 거의 유일한 좋은 길이었습니다 당신은 당신이 찾고 있는지 여부를 볼 수 있습니다 잘못된 곳에서의 기억 예를 들어, 드로잉을하고 있는지 여부 또는 레이아웃 또는 터치 처리를하고 있는지 여부를 나타냅니다

이제는 Studio의 일부입니다 그래서 당신이 보여주는이 그래프를 볼 때, 실시간으로, 메모리 사용량, 당신 다른 버킷도 볼 수 있습니다 그래서 당신이 얼마나 많은 기억을하는지 말해 줄거야 Java 힙에서 사용하거나 얼마나 많은 기본 메모리 당신이 사용하고있는 그래픽 메모리의 양 따라서 문제의 출처를 정확히 찾아 낼 수 있습니다

화면에서 보듯이 슬라이스를 만들 수도 있습니다 그 시간 동안 모든 할당을 보여줄 것입니다 스택 추적을 볼 수 있으며 참조를 폴드 할 수 있습니다 가장자리 프로파일을 덤프 할 필요가 없습니다 에지 [INAUDIBLE] 사용

jhat을 실행하고 이러한 끔찍한 모양의 웹을 볼 필요가 없습니다 사용하던 UI 아직 모든 일을 처리하지는 못하기 때문에 때때로 jhat에 가야하지만 아주 좋은 방법입니다 기억력이 있다면 시작할 수 있습니다 애플리케이션 내부의 문제

레이아웃 디자인이 이렇게 사용되었습니다 그것은 기사 디자인입니다 흥미로운 이유는 안드로이드가 나왔을 때, 모두에게 XML 로의 전환을 유도하는 것은 매우 어려웠습니다 많은 분노한 개발자를 기억하십시오 UI를 빌드하는 Java 코드를 작성하려고했습니다

그리고 이제, 우리는 당신에게 이것을주었습니다 따라서 이것은 비주얼 레이아웃 비주얼 에디터입니다 이제 화가 많이 들었습니다 누가 시각 도구가 아닌 XML 만 사용하고 싶어하는지 그래서 우리는 단지 새로운 것을 발명해야만한다고 생각합니다

당신이 이것을 사용하기 시작하게하는 미끼로서 CHASE HAASE : 나는 단지 상수라고 생각한다 엔지니어들이 무엇이든 불만 스러울 것입니다 당신이 그들에게주는 새로운 옵션 로망 가이 : 특히 프랑스 인 경우

그리고 도구의 새로운 기능에 대해 이야기하는 경우, 모션 레이아웃을위한 새로운 도구를 살짝 봤습니다 제약 레이아웃을 사용하여 애니메이션을 만들 수 있습니다 Nicola와 John은 다시 그것을 보여줄 것입니다 생각, 내일 또는 목요일 그러니 그 이야기를 찾아보십시오

그래서 우리는이 비주얼 디자이너가 오직 시작 우리가 할 수있는 일은 훨씬 더 많습니다 우리는 아직 모든 것을 구축 할 시간이 없었습니다 그러나이 새로운 모션 레이아웃 편집기는 다음 단계입니다 시각적 인 피드백을 통한 애니메이션 제작 – 실시간 시각적 피드백 – XML을 사용하는 것보다 훨씬 좋음 런타임 및 언어, Chet

잘 지내세요 그래서 달빅 너무 슬퍼하지 마세요 Dalvik은 굉장 했어 그것은 무엇을하도록 설계 되었는가? 공간에 최적화되어 있었습니까? G1이 나왔을 때, 192 메가 였고, 그 중 48 개가 64 세 – 작은 부분이 응용 프로그램에 액세스 할 수있었습니다 CHET HAASE : 매우 적은 양의 메모리 실제로 응용 프로그램에서 사용할 수있었습니다

그래서 Dalvik은 런타임으로, 자체 또는 모든 힙에 대해 많은 메모리를 차지합니다 그리고 물건을 저장해야하는 곳 따라서 장치가 좋아짐에 따라, 기억이 커지면서 반드시 그런 것은 아니었다 도매 방식으로 최적화 할 수있는 능력을 갖추어야한다 우리가 필요했던 것

어떤 시점에서 그들은 기본적으로 시작되었습니다 우리가 말했던 것처럼 Art 런타임의 처음부터, KitKat에서 나왔고 Lollipop에 기본으로 설치되었습니다 그러나 Dalvik 시대에, 우리는 기본적으로 그로부터 나온 권고안을 가지고 있었다 할당과 같은 것들 때문에 정말 비싸다 힙을 걸 으면서이 물건을 넣을 장소를 찾아야했습니다

그리고 힙은 시간이 지남에 따라 파편화되었다 그것은 비록 그것이 많은 공간을 거기에서 가지고 있었다고해도, 그것은 연속적으로 많은 공간을 가질 필요는 없었습니다 그 물건을 넣을 장소를 찾으러 그리고 컬렉션도 정말 비쌌습니다 결국 당신은 시간이 지남에 따라 물건을 배정 할 것입니다

그리고 나서 결국 기억을 잃을 것입니다 그리고 그렇게 할 때 – 당신이 애니메이션의 중간에있을 때, 당신은 UI 스레드를 사용하고 있습니다 비트 맵을위한 공간을 할당해야합니다 공간을 찾을 수 없으므로 GC를 더 잘 실행하십시오 아마 2 ~ 3 개의 프레임을 잃을 것입니다

Dalvik은 실제로 모든 항목을 수집해야했기 때문에 더 이상 참조없이 그래서 우리가 가진 권고 중 일부는 기본적으로 가능할 때마다 물건을 할당하지 마십시오 그것은 틀림없이 우리가 프레임 워크 안에서 삶을 살아가는 방법입니다 우리는 당신의 내적 루프이기 때문에 응용 프로그램 개발자가 그렇게하는 것이 좋습니다 내가 생각하는 권고 중 하나 지역 사회는 타격을 본 적이있다

열거 형을 사용하지 않았습니까? 열거 형 구조가 밝혀 졌기 때문에 – 클래스 구조체는 int 객체보다 훨씬 큽니다 권리? 그리고 우리는 ints를 온통 사용합니다 메모리 양을 최소화하려고하기 때문에 우리는 또한 시간을 최소화하려고 노력한다 우리는 새로운 객체를 만들고 있습니다 원시 타입을 전달하는 것

우리는 또한 원시 타입이 멋지다고 말했다 침대는 시원하고, 수레는 시원합니다 대문자 I 정수, 그렇게 차갑지 않다 또한 차가운 것이 오토 박싱입니다 표준 콜렉션 클래스를 사용할 때, 이 정보에 많은 정보가 저장되어 있다면 원시 타입과 그것들은 autoboxed in and out되고 있습니다

또는 다른 패턴과 접근 방식을 사용하는 경우 이러한 것들을 객체로 생성하게하고, 너는 우리가 가진 도구에서 볼 수있다 그 시간에, 너는 오토 박싱과 즉석 배정 그리고 결국에는 GC가 시작됩니다 너는 조금 더 싫어한다 현대 세계에서 우리는 이제 예술을 가지고 있습니다

성능에 최적화되어 있습니다 그것은 메모리 최적화를 위해 처음부터 만들어졌지만, 성능을 위해 최적화 할 수 있습니다 그리고 이것은 메서드 호출 항목 측면에서 성능입니다 할당 및 컬렉션에 최적화되어 있습니다 빠른 할당 및 수집 몇 가지 이유가 있습니다

그 중 하나는 대형 물체를 위해 별도로 마련된 것입니다 그래서 모든 것을 같은 힙에 놓는 대신에, 큰 물체를위한 공간을 찾아야 만한다 모든 작은 것들 중에, 그것은 모든 비트 맵을 넣습니다 별도의 힙에 모든 큰 개체가 전체적으로 표시됩니다 큰 오브젝트를위한 공간을 찾는 것이 더 쉽습니다

그러면 작은 개체가 별도의 힙에 들어갑니다 또한, 정말 멋지다, 그것은 조각 모음을 할 수 있습니다 Dalvik은 조각 모음을 할 수 없으므로 시간이 지남에 따라 할당됩니다 결국에는 충분한 공간이 없었습니다 당신이 필요로하는 것을 위해서

그래서 당신은이 애매한 오류 메시지를 얻을 것입니다 그곳에는 메가 바이트가 없기 때문에 단지 48 메가 바이트 무료 당신이 깨닫기 전까지는 많은 의미를 갖지 않습니다 아마도 힙이 조각난 것 같습니다 우리는 그것에 대해 많은 것을 할 수 없습니다

이제 할 수 있습니다 Art에서는 힙을 조각 모음합니다 이전 릴리스에서는 응용 프로그램이 조각 모음을 수행 할 때 조각 모음을 수행했습니다 백그라운드에 있었다 이제 응용 프로그램이 실제로 조각 모음을 수행 할 수 있습니다

뿐만 아니라 전경에 있습니다 그래서 더 좋은 방법 이제 우리가 가진 권고 사항은 필요한 경우 할당하고 할당하십시오 괜찮아 사실 열거 형을 사용하면 걱정하지 않습니다

어서 [CHEERING] 분명히, 당신은 돌보아, 그래서 당신이 그들을 즐기시기 바랍니다 우리는 여전히 원칙적으로 사용하지 않는 경향이 있습니다 많은 프레임 워크 코드와 API에서 로망 가이 : 나는 그것을 사용한다 CHET HAASE : 그들은 때때로 거기에있다

그러나 내가 말했던 것처럼, 우리는 여전히 내부 루프입니다 그래서 우리는 더 보수적 인 경향이 있습니다 반드시 애플리케이션 코드에 있어야합니다 적절한 유형을 사용하십시오 나는 여전히 원시적 인 타입이 정말로 멋지다고 생각한다

하지만 그걸 알아? 오브젝트 유형이있는] 렉션을 사용해야하는 경우에는 정상입니다 그러나이 휴대 전화는 여전히 제약이있는 기기라는 점에 유의하십시오 메모리는 48 또는 64 메가 사용할 수 없습니다, 하지만 다른 모든 것들과 여전히 공유되고 있습니다 사용, 해당 시스템에서 실행 중 또한 배터리는 정말 중요합니다

배터리를 사용하는 것이 중요합니다 가능한 한 오랫동안 언제나 끊임없이 일을하고 있다면 만약 당신이 끊임없이 쓰레기를 만들고 그것을 모으고 있다면, 아트는 훨씬 빠릅니다 그러나 예술은 여전히 ​​실제로 작업을해야합니다 할당하고 수집하고, 모든 것들은 힘을 사용합니다

따라서 배터리가 전력을 사용한다는 것을 기억하는 것이 좋습니다 어쩌면 네가 보수적 인 태도로 너는하려고하는거야 또한 프레임 워크처럼 내부 루프를 인식해야합니다 병목 현상 단단한 루프에서 일을하지 마십시오

성능에 문제가 발생할 수 있습니다 ROMAIN GUY : 안드로이드가 시작되었을 때, 팀은 자바 프로그래밍 언어 응용 프로그램을 만들려면 그 많은 이유가있었습니다 주요한 것은 매우 인기있는 언어였습니다 수백만 명의 개발자가 이 언어를 사용하는 방법을 알고있었습니다 훌륭하고 자유로운 도구가 많이있었습니다

따라서 빠른 채택을 위해 정말 도움이되었습니다 Android 플랫폼의 시간이 지남에 따라, 우리는 때때로, 새 버전의 언어를 채택하는 데 약간의 시간이 걸립니다 우리는 최근 자바 프로그래밍 언어 버전 18 나는 그들이 1

10에 달하고 있다고 생각한다 그러나 그것은 수년 동안 우리를 섬겼습니다 작년에 다행히도 우리는 완전한 지원을 발표했습니다 Kotlin 프로그래밍 언어 용 얼마나 많은 사람들이 지금 그것을 사용하고 있습니까? [CHEERING] 괜찮아

CHASE HAASE : 그들을 지켜라 하나 둘 셋 넷 ROMAIN GUY : 거의 모두 5 번 이상 이었어 로망 가이 : 우리는 몇 가지 슬라이드를 유지할 것입니다

그래서 우리는 작년에 그것을 2017 년에 발표했습니다 우리는 JetBrains와 긴밀히 협력하고 있습니다 우리는 도구가 Kotlin과 잘 작동하는지 확인합니다 우리가 필요한 기능에 액세스 할 수 있는지 확인하십시오 전반적으로, 우리는 그것을 좋아하기 때문에 코드를 읽고 쓰기가 더 즐겁다

우리는 코드를 읽고 쓰는 데 너무 많은 시간을 소비합니다 그건 중요합니다 여기에 몇 가지 예가 있습니다 그들은 읽기가 어려울 것입니다 그러나 여러분 모두가 Kotlin을 작성하는 방법을 알고 있기 때문에 괜찮습니다

이러한 예제는 Kotlin 확장에서 가져온 것입니다 그래서 나는 그들을 정말로 빨리 지나갈 것이다 나는 명명 된 매개 변수를 좋아한다 메소드의 오버로드를 여러 개 만들 필요가 없습니다 또는 빌더 모든 시간

정말 유용한 인라인 함수를 사용할 수 있습니다 확장 프로그램을 만들 때 또는 그래픽을 만들 때도 코드, 예를 들면 우린 그걸 봤어 연산자 운영자에게 과부하가 걸릴 수 있습니다

당신은 그것에 조심해야합니다 이 문제를 상당히 악용 할 수 있습니다 일단 X로 불리는 고정 연산자를 만들었습니다 왜냐하면 그것은 벡터에 대한 교차 곱처럼 보이기 때문입니다 그러지 마

그것은 끔찍한 생각입니다 나는 끔찍한 생각이기 때문에 그것을 GitHub에 넣었습니다 소멸 할당을 할 수 있습니다 따라서 POJO가 있으면 컴포넌트 1, 2, 3 등으로 불리는 메소드 그런 다음 여러 개의 과제를 수행 할 수 있습니다

한 줄의 코드로 이것은 Android KTx의 예입니다 우리는 정수를 파기합니다 따라서 이동 및 마스킹을 수행 할 필요가 없습니다 바이트와 ​​정수의 데이터 클래스가 있습니다

모든 게터와 두 개의 문자열을 만드는 매우 쉬운 방법 같음 및 해시 코드 그래서 당신은 할 필요가 없습니다 IntelliJ에 알려주기 위해 바로 가기를 입력해야합니다 그것은 우리가 저지르는 게으름의 수준입니다 Kotlin에 도달했습니다 그래서 환상적입니다

그리고 마지막으로 그렇습니다 나는 그저 나에게, 내가 할 수있는 일을 부르고 싶었다 너무 매력적 Kotlin은 매우 영리하다 그들이 언어로 내린 의사 결정 그리고 그들 중 하나는, 예를 들면, lambda가 함수의 마지막 매개 변수 일 때, 그들은이 특별한 구문을 사용할 수 있습니다 너는 람다를 통과 할 필요가 없다

함수에 대한 매개 변수로 중괄호를 열 수 있습니다 바로 코드를 입력하십시오 외모와 느낌이 훨씬 자연 스럽습니다 우리가 새로운 것을 디자인 할 때 지금하고있는 일 중 하나입니다

플랫폼의 API – Android P로 시작 – 우리는 Java API가 이러한 규칙으로 가득 차 있음을 확인합니다 단일 추상 메소드 인터페이스가있을 때, 우리는 인터페이스를 사용하는 매개 변수 매개 변수 목록의 끝 부분에있다 Kotlin 개발자가 이익을 얻을 수 있도록 언어의이 특정 기능에서 그리고 우리는 점점 더 많은 것을 할 것입니다 지원 라이브러리 및 향후 API에 대한 정보를 제공합니다 그래서 아직 Kotlin을 사용하지 않는 당신들에게는, 프로젝트에는 Kotlin과 Java가 모두 포함될 수 있습니다

모든 신청서를 Kotlin으로 전환 할 필요는 없습니다 응용 프로그램에 추가하는 다음 클래스는 Kotlin, 또는 기존 클래스를 변환 할 수 있습니다 우리는 1 톤의 린트 수표를 가지고 있습니다 누락 된 것이 있으면 Tor에게 알려주십시오 그것은 당신 앞에서 꽤 많이 쓸 것입니다

그리고 바로 저지하십시오 보푸라기 수표를 쓸 때 일종의 기계입니다 Android 확장 프로그램을 확인하십시오 다시 한번 Jake Wharton의 이야기가 있습니다 나는 목요일 아침에 그것에 대해 생각한다

흥미로운 점에 대해서 이야기 할 것입니다 스타일 가이드도 만들었습니다 그래서 아직 자바 가이드를 사용하고있는 여러분 – 내 말은, 우리는 실제로 하나도 가지지 않았다는 것입니다 하지만 소스 코드를 따르고 있다면, 당신은 아마 당신의 들판에 M의 접두사를 붙일 것입니다 우리가 그렇게하지 않는다는 것을 알면 행복하게 될 것입니다

더 이상 Kotlin 첫째, 우리가 정말로 그것을 좋아하지 않기 때문에, 그리고 네가 정말로 할 수 없기 때문에 어쨌든 Kotlin의 속성 구문 때문입니다 우리는 또한 상호 운용성 가이드가 있습니다 코드를 작성하려고한다면 그것은 두 자바 개발자 모두가 소비하기위한 것이다 및 Kotlin 개발자, [INAUDIBLE] 자바 코드 또는 코 틀린 코드 작성 우리는 당신에게 설명 할 수있는 가이드가 있습니다

API 작성 방법 그래서 그들은 두 언어로 자연스럽게 사용될 수 있습니다 그리고 그것들은 우리가 스스로 따라가는 지침입니다 플랫폼 및 지원 라이브러리에 포함 된 새로운 API CHASE HAASE : API에 대해 이야기 해 봅시다 우선 Android의 레이아웃, 그 (것)들의 낱단이있다, 그러나 이들 사람들이 시간이 지남에 따라 다루는 중요한 것들입니다 우선 AbsoluteLayout이있었습니다

그리고 사용하기 쉽습니다 왜 그렇지 않습니까? 그럼 정확히 어디서 볼 수 있을까요? 너는 그걸 원해, 그렇지? LinearLayout, 당신은 그 것들을 중첩 할 수 있습니다 원하는만큼 깊게 UI를 정확하게 얻을 수 있습니다 너 찾고있어 FrameLayout, 괜찮습니다

당신이 그것을 곁눈질로 본다면, AbsoluteLayout과 같은 것입니다 로망 가이 : 그게 우리가 말할 수있는 가장 좋은 것입니다 괜찮아 GridLayout, 밝혀졌습니다 그것은 사용하기에 조금 복잡합니다

그러나 우리는 그것을 이해할 수 있으며 유연성이 매우 뛰어납니다 그곳에 그리고 RelativeLayout, 우리는 그것이 비싸다고 들었습니다 우리가 사용해야 할 것인가 아닌가? 그래서 현대 세계 다음은 AbsoluteLayout에 대한 우리의 생각입니다

우리는 단지 그것을 분명히하고 싶습니다 [LAUGHTER AND APPLAUSE] CHET HAASE : 이것이 더 이상 사용되지 않는 유일한 이유 하나의 중요한 클래스가 있기 때문입니다 하위 클래스는 – ROMAIN GUY : 아니, 더 이상 사용되지 않습니다 사용되지 않습니다 CHET HAASE : 더 이상 사용되지 않습니다

승인 글쎄, 우리는 그걸 사용하지 않았고, 그 정도면 충분하다 웹보기가 AbsoluteLayout에 있기 때문에 우리가 취할 수있는 것처럼 죄송합니다 사용하지 마십시오

잘하면, 당신은 아니에요 LinearLayout, 여전히 실제로 사용하는 것이 좋습니다 특히 간단한 경우 네가 깊고 깊게 중첩되어 있다면, 그때 당신은 깊고 깊게 틀렸고, 더 나은 해결책이 있습니다 우리는 슬라이드의 맨 아래에 그것을 올릴 것입니다

FrameLayout, 간단한 사용 사례에서도 괜찮습니다 너는 거기에 그 한가지를 넣어야한다 적절한 패딩과 마진을 유지해야합니다 그것은 그곳에있는 일종의 것입니다 ROMAIN GUY : 그리고 FrameLayout의 더러운 비밀 이 경우 AbsoluteLayout이라는 것입니다

여백을 올바르게 사용하면 기본적으로 AbsoluteLayout을 가지고 있지만 그렇게하지 마십시오 그것들을하지 마십시오 그러지 마 GridLayout– 사실은 문제를 제외하고 도구와 함께 사용하도록 의도 된 실제로 도구를 썼다 로레인 가이 : 우리가 잊은 것 같아

아마도 가장 좋은 레이아웃이 아닐 것입니다 당신의 상황을 위해 그 주위에 머리를 감쌌다 승인 거기에 더 나은 해결책이있을 수 있습니다 RelativeLayout– 우리는 ConstraintLayout이, 일반적으로 더 나은 해결책입니다

나는 그것을 능력의 부분 집합으로 생각할 것이다 RelativeLayout 그것은 많은 기능을 가지고 있습니다 아이들의 상대적 위치 선정, 서로에 대해 그러나 그것은 상대적인 위치 지정 방법을 더 많이 가지고 있습니다 가이드 라인 및 그들이 수행 한 새로운 기능 중 일부 ConstraintLayout에서 작업

제가 설명하기를 좋아하는 방식은 ConstraintLayout입니다 작동하는 RelativeLayout입니다 CHET HAASE : 또한 그것에 대해 가장 좋은 점은 도구와 밀접하게 통합되어 있습니까? 그것은 같은 사람들에 의해 직렬로 작성되었습니다 도구를 사용하면 디자인 도구가 실제로 작동 함을 의미합니다 잘 레이아웃, 그 반대, 잘, 그들은 API를 만들었고 도구는 결코 따라 잡지 못했습니다

그건 거기에 해당하지 않습니다 우리는 20을 언급했다 아직 20이 아닙니다

나는 그것이 곧 20이라고 말할 것이다 그래서 20에 등장 할 것을주의 깊게 살펴보십시오 이번 주 존과 니콜라의 이야기 아마도 그 물건들 중 일부는 넘어갈 것입니다

AbsoluteLayout에 대한 최종 생각 로레인 가이 : 그냥 알기 쉽습니다 그래서 UI 툴킷에 클래스가 있습니다 AdapterView는 여러 위젯의 기본 클래스입니다 그래서 ListView, GridView 및 갤러리

그리고 그들은 수년 동안 우리를 잘 봉사했습니다 그들은 몇 가지 문제가있었습니다 그들은 유지하기가 어려웠다 GridView는 사용되지 않았다고 생각합니다 꽤 많은 앱으로 꽤 오래 동안, 어쩌면 응용 프로그램에 대한

갤러리는 수평 ListView와 비슷합니다 오랫동안 사용하지 않을 것이라고 확신합니다 그리고 우리는 잠시 그것을 확실히 보지 못했습니다 어쨌든 내가 너라면 네가 사용하지 않을거야 아마 작동하지 않습니다

여기에 몇 가지 문제가 있습니다 따라서 AdapterView에는 어댑터가 있으며, 어댑터가 데이터 세트간에 인터페이스됩니다 및보기 자체 어댑터에서 할 수있는 일 중 하나 데이터 세트의 변경 사항을 뷰에 알립니다 문제는 당신에게만 알릴 수 있다는 것입니다 거친 변화의 당신이 할 수있는 말은, 어이, 뭔가 바뀌 었습니다

너무 불합리하게도 ListView에서 우리는 변경된 사항을 파악하려고하는 많은 코드가 있습니다 네가 우리에게 말할 수 있다면 좋지 않을까? 너 아마 알고 있기 때문에? 우리에게 말할 수없는 API를 만들었습니다 그래서 그것은 바보 같은 짓입니다 우리는 당신에게이 패턴을 따르라고 말하기도했습니다보기 보유자

그래서 View Holder – 그리고 그것은 하나입니다 내가 많은 사람들을 보았던 것들 중 View Holder에 대한 온라인 미친 제품이기 때문에 당신이 써야 할 번호판 그것은 실제로 매우 중요했습니다 나는 돌아가서 우리의 오래된 회담 중 하나를 들여다 보았다 보기 홀더 패턴을 사용하면 초당 10 프레임 추가 당신은 T-Mobile G1에서 ListView를 스크롤하고있었습니다

그 당시에는 많은 문제가있었습니다 더 이상 필요하지 않습니다 그러나 RecyclerView 덕분에 API의 일부로, 이제 어쨌든 무료로 받으실 수 있습니다 그리고 마지막으로 애니메이션 AdapterView에서는 애니메이션을 사용할 수 있습니다

그래서 예를 들어, ListView 항목이 데이터 세트에서 사라졌습니다 그리고 아이템을 사라지게하고 싶습니다 나머지 항목은 붕괴되어 갭을 닫습니다 ListView를 사용하여이 작업을 수행 할 수 있습니다 이 코드를 약간만 작성하면됩니다

Chet는 몇 년 전에 블로그 포스트를 썼습니다 [웃음] ListView 애니메이션 중 하나였습니다 우리는 당신에게 보여주는 일련의 비디오를 가지고있었습니다 다른 것들을하는 법 ROMAIN GUY : 이것은 코드의 일부입니다

미래 옵저버 만 이해하면됩니다 과도 상태 및 측정 및 메모 및 애니메이션이 포함됩니다 다소 어려웠습니다 그래서 이제 대신 RecyclerView가 있습니다 감사하게도

그래서 이것은 단지 바보 같은 응용 프로그램입니다 처음 RecyclerView를 실제로 사용했을 때 몇 달 전 이었어 그것은 훨씬 쉬웠다 정말 좋았어요 RecyclerView의 다른 버전을 만들 수있었습니다

RecyclerView에 대한 좋은 점 여러 위젯을 사용하는 대신 데이터 세트에 대해 효과적으로 다른 레이아웃입니다 단일 RecyclerView에 대한 레이아웃을 지정할 수 있습니다 이 코드는 레이아웃이 다른 동일한 코드입니다 RecyclerView의 관리자 CHASE HAASE : 나는 또한 그것들 모두가 수직적 이었지만 실제로는 가로 배치

몇 년 동안, 사람들은 우리에게 수평을 어떻게 할 것인지를 물었습니다 오, 쉽습니다 CHASE : 수평 ListView ROMAIN GUY : ListView에서 회전을 설정하기 만하면됩니다 그런 다음 모든 터치 이벤트를 차단해야합니다

그들을 회전 시키십시오 그리고 아마 몇 가지 더 많은 API가 있습니다 무시할 필요가 있기 때문에 어쨌든 그것은 쉽다 그래, 비밀 가장 쉬운 방법은 휴대 전화를 돌리기 만하면됩니다 90도

시스템의 일부로 더 쉽게 사용할 수 있습니다 최신 릴리스의 UI 향상 ROMAIN GUY : 그리고 RecyclerView에 관한 좋은 점 중 하나 – 훨씬 더 나은 방법으로 많은 일을합니다 우리는 페이징을 가지고 있고 우리는 프리 페칭을 가지고있다 API가 더 좋습니다

레이아웃 관리자를 변경할 수 있습니다 자신의 레이아웃 매니저를 작성할 수 있습니다 그러나 애니메이션 또한 무료로 제공됩니다 그래서 우리가 방금 본 코드와 같습니다 특히 RecyclerView를 사용하면 얻을 수있는 것 세밀한 변경입니다

아이템이 있다면 우리에게 말해 줄 수 있어요 제거 된 항목 항목이 추가되면 어떤 항목이 추가됩니까? 변경된 항목의 범위, 아니면 모든 것이 바뀌 었다고 말할 수 있습니다 이것은 당신과 우리에게 훨씬 좋습니다 좋아

좋아 파편 옛날 우리는 그 파편들 정말 복잡했습니다 또한이 문제를 해결할 것입니다 그래서 우리는 반드시 모든 것이 정확하거나 가지고있는 것은 아닙니다

사람들이 필요로하는 모든 API가 있으므로 개선점을 넣으십시오 플랫폼 릴리스로 그런 다음 응용 프로그램은 해당 플랫폼에 장치가 출시되었습니다 따라서 현대적인 조언은 플랫폼 버전을 사용하지 않는 것입니다 우리는 이후 모든 코드를 이식했습니다

지원 라이브러리에있는 모든 수정 사항을 작성하려면, 우리는 이제 더 이상 사용하지 않는 조각들을 사용했습니다 핵심 플랫폼에서 그래서 거기에 사용하지 마십시오 지원 라이브러리 또는 Jetpack 버전 조각을 사용하십시오 우리는 더 많은 선을 거기에두고 있습니다

그래서 그것들을 사용하고, 우리는 계속하고 있습니다 개선하기 이번 주에 파편에 관한 이야기가 있습니다 – 내일 아침에 CHASE HAASE : 내일은 Adam과 Ian으로부터 그러므로 사물에 대한 더 많은 정보를 듣기 위해 그것을 확인하십시오

우리가하는 일과 길 조각을 사용하는 것이 조금 더 쉬워야합니다 그 중 하나가 새로운 탐색 컨트롤러입니다 그래서 체크 아웃하십시오 그것은 파편에 일종의 빌드입니다 그것은 그들에게 의존하지 않습니다

의존성은 없지만 그렇습니다 만들고 탐색 할 수있는 기능을 구축하십시오 응용 프로그램의 화면 사이 활동은 단편과 매우 밀접하게 관련됩니다 예전에는 기본적으로 Android 애플리케이션 여러 활동들로 구성되었습니다

이것이 모든 안드로이드 애플리케이션의 애플리케이션 흐름이었습니다 우리는 개발자가이 작업을 수행 할 것을 기대했으며 개발자는이 작업을 수행했습니다 앱의 한 화면에서 이동하려는 경우 다른 사람에게, 당신이 의도를 시작하면, 당신은 새로운 창을 얻습니다 거기에 당신을 데려 오기위한 창 애니메이션이 있습니다 거기 있네

새로운 접근법은 가능한 한 단일 활동을 사용하는 것입니다 그것은 사용자에게 훨씬 풍부한 경험을 선사합니다 그 창문 애니메이션들 – 음, 그들은 움직이고 있어요 하지만 그들은 재미있는 일을하지 않습니다 사용자를 돕는 아무 것도하지 않습니다

응용 프로그램의 한 상태에서 다른 상태로 전환합니다 대신 기본적으로 완전히 다른 창 너가 실제로 할 수있을 때 볼 수있게된다 단일 활동 방식을 사용하여 동일한 Chrome 유지 응용 프로그램 주위 같은 행동을 할 수도 있습니다 바에서 콘텐츠가 아래로 바뀌면서 또는 더 풍부한 애니메이션을 사용하십시오

핵심 플랫폼 애니메이션 또는 조각으로 가능 애니메이션 그러니 계속해서 활동을하십시오 신청서에 상황이있을 수 있습니다 다른 진입 점이있는 곳, 특히 누군가가 당신의 신청서에 올 수있는 길이가 길다 와

그런 다음 별도의 활동을하는 것이 적절합니다 그것이 그 정보를 폭로하는 방법입니다 하지만 그렇지 않으면 단일 활동을 사용해보십시오 조각은 단일 활동 응용 프로그램에는 필요하지 않지만, 하지만 그들은 이것에 많은 도움을 줄 수 있습니다 특히 최근 개선 된 점이 몇 가지 있습니다

그리고 네비게이션 콘트롤러도 마찬가지다 건축물 여기 오래된 조언이있었습니다 몇 년 전– OK, 2016 년 기본적으로 2 년 전 Dianne Hackborn이 게시했습니다

G +에서 우리는 대개 응용 프로그램 개발자로부터이 질문을받습니다 여기서 우리는 애플리케이션 아키텍처 그들은 그들의 신청서에서 사용해야합니다 그리고 우리의 대답은 항상, 우리는 상관하지 않습니다 우리는 당신이 아닙니다

우리는 귀하의 신청서가 어떻게 작동하는지 알지 못합니다 우리는 최고의 아키텍처를 모릅니다 귀하의 신청서에 대해서는 귀하가 직접 결정하십시오 그리고 보통 다음과 같은 질문이 있습니다 예, 알 겠어

하지만 어떤 아키텍처를 사용해야합니까? 그래서 Dianne은 기본적으로 이렇게 말했습니다 이 모든 것을 한 번 우리는 상관 없어 우리가 가지고있는 구성 요소들 – 콘텐츠 제공자, 활동, 서비스 – 이들은 시스템 수준의 구성 요소입니다 그들은 주변의 건축물이 아닙니다

당신은 당신의 어플리케이션을 빌드합니다 그러므로 적절한 것을 만드십시오 귀하의 응용 프로그램에 대한 새로운 조언은 실제로, 우리는 당신에게 몇 가지 권장 아키텍처를 제공하게되어 기쁩니다 사람들이 적어도 좋아할 것이라고 밝혀 졌기 때문에 말이되는 몇 가지 일반적인 조언, 우리는 지금 우리가 그것을 가지고 있다고 믿습니다

특히, 아키텍처 구성 요소의 경우, 우리는 우리가 많은 의미가 있습니다 우리는 사용하기 쉬운 API를 가지고 있습니다 당신은 그 주위에 구축 할 수 있습니다 우리는 당신이 이것을 사용하도록 요구하지 않습니다 자신에게 맞는 아키텍처를 사용하십시오

하지만 핵심 아키텍처가 있습니다 우리는 일해야한다고 믿습니다 새로운 애플리케이션을 시작하는 경우, 팀에 새로운 개발자가 있다면 말이됩니다 우리가 일한 이유 중 하나 Android 아키텍처 구성 요소 포함 어려운 문제를 해결하는 것이 었습니다 가장 어려운 문제 중 하나는 Android 수명주기였습니다

그리고 우리의 대답은, 당신이해야 할 모든 것입니다 이 도표를 이해하고 암기합니다 그리고 누군가 외부에서 자신의 버전을 만들었습니다 그 다이어그램은 실제로 이렇게 보입니다 당신이 이것을 보았다면 이해하기가 훨씬 쉽습니다

따라서 기본적으로 알아야 할 모든 것이 있습니다 항상 네 머리 속에 문제는 기본적으로 당신의 활동에 많은 방법들을 만들어라 라이프 사이클을 추적하고 관리 할 수 ​​있습니다 당신은 창조와 시작과 멈춤을 다루고 있습니다

다시 시작하고 일시 중지하면 물건을 다룰 것입니다 뿐만 아니라 파괴에서 Create에서 너무 많이 사용하고있을 것입니다 당신은 아마 경주 조건뿐만 아니라 당신의 시작과 당신의 중지에서 누출, 그리고 당신은 아마 일시 중지 및 이력서에서 그 일을하고있을 것입니다 게다가

그리고 당신은 왜 당신이 파괴에 대해 무시하고 있는지 정확히 알지 못합니다 그러나 누군가는 당신이 아마해야한다고 말했습니다 그래서 우리도 그렇게 할 것입니다 그러는 동안 실제로는 수명주기 상태 만 알고 있습니다 당신이 그 방법들을 오버라이드한다면

우리는 당신에게 그 질문을하는 방법을주지 않았습니다 우리는 그것이 내부적으로 무엇인지 압니다 우린 너를 비밀리에 들여 보내지 않을거야 따라서 쿼리 할 API가 없습니다 그래서 모든 메소드를 오버라이드 할 필요가 있습니다

그리고 나서 당신은 거기에 너무 많은 코드를 집어 넣게됩니다 기본적으로 너무 많은 논리가 모든 곳에서 일어나고 있습니다 새로운 접근 방식은 라이프 사이클이라는 객체가 있다는 것입니다 소유자 라이프 사이클 객체를 요청할 수 있습니다

그런 다음 상태를 쿼리하거나 당신이 어떤 라이프 사이클 상태인지 알고 싶다면, 또는 관찰자를 설정할 수 있습니다 그런 다음 해당 메소드에 콜백을 가져올 수 있습니다 이렇게하면 별도의 장소로 추상화 할 수 있습니다 기본적으로 모든 활동 코드를 포기하지는 않습니다 이 정보

하지만 당신은 그것을 어디에 두는 지 귀하의 응용 프로그램에서 감각 다행히도 우리는 lifecycle owner의 하위 클래스를 오버라이드합니다 또는이를 조각과 AppCompat 모두에서 구현하십시오 활동 그래서 지원 라이브러리에서 이것을 사용하십시오

수명주기 소유자입니다 따라서 기본적으로 수명주기를 얻기 위해 쿼리 할 수 ​​있습니다 그런 다음 거기에서 나가십시오 그래서 우리는 당신이 활동할 모델에서 출발했습니다 기본적으로 모든 라이프 사이클 종속 로직이 포함되어 있습니다

활동이 훨씬 더 작을 수있는 모델로, 그 논리를 꺼내 다른 것으로 추상화하십시오 그곳에는 생명주기 관찰자를 설정하고, 원하는 콜백을 얻으십시오 우리는보기와 데이터에서 비슷한 문제를 겪고 있습니다 우리에게는 활동이 있으며, 우리는이 모든 정보를 가지고 있습니다 거기에 대한 견해에 대해

그리고 우리는 그 견해에 대한 자료를 가지고 있습니다, 우리는 데이터가 언제 바뀌는지를 알아야합니다 또한 라이프 사이클을 추적해야합니다 그래서 우리는 잘못된 시간에 물건을 새거나 물건을 부르지 않습니다 그래서 우리는 결국 너무 많은 것을 가지고 끝납니다 이제는 LiveData에 대한 개념이 생겼습니다

배치 할 수있는 ViewModel 그 물건들 당신은 활동에서 그것을 추출 할 수 있습니다 그 모든 정보를 그곳에 넣을 수 있습니다

그걸 관찰해라 이제 활동에서, 당신은 정말로 보기 및 참조 정보 만 제공 ViewModel에 전달합니다 그런 다음 모든 논리를 ViewModel에 넣으십시오 그것은 LiveData 객체를 사용하고 있습니다 자체 라이프 사이클을 처리하므로 사용자는이를 관찰 할 수 있습니다

훨씬 나아 졌어 덜 버기 데이터의 경우, 당신에 대한 우리의 논쟁은 당신 스스로에 달렸습니다 우리는 귀하의 데이터를 관리하지 않습니다 너가 원하는 것을해라

그리고 많은 데이터베이스 솔루션이 있습니다 우리는 플랫폼에 SQLite를 가지고 있습니다 가서 사용하십시오 너 자신을 노크 해 도대체 무엇이

우리는 그 사업을 시작하고 싶지 않습니다 새로운 접근 방식은 실제로 데이터를 위해 뭔가를 제공한다는 것입니다 SQLite를 기반으로 구축되었지만 실제로는 빌드 시간 확인 기능을 제공하므로 사용자는 이러한 쿼리를 전송 한 다음 런타임에 오류가 발생합니다 그러나 빌드 타임과 통합시이 문제를 볼 수 있습니다 우리가 이전에 본 라이브 데이터 (LiveData) 또는 원할 경우 독자적으로 할 수 있습니다

우리는 데이터베이스 솔루션을 인수하려고하지 않습니다 우리는 더 나은 지역 영구 이야기를 단순히 제공하고 있습니다 우리가 이전에했던 것보다 더 쉽게 당신을 위해 전체 다이어그램은 다음과 같습니다 여기서 유일한 새로운 요소는 저장소에 대한이 아이디어입니다

기본적으로 추상화하는 패턴입니다 데이터의 출처 그래서 그것이 지역이나 웹에서 오는 경우, 나머지 국민들에게는 중요하지 않습니다 그것을 쿼리하고 있습니다 거기에서 추상화를하는 것은 좋은 일입니다 데이터 페이징

그래서 우리는이 것을 CursorAdapter라고 불렀습니다 그것에 대해 좋은 요소가있었습니다 그것은 데이터베이스 커서에 대한 지원을했습니다 좋았어 그러나 그것은 ListView에만 국한되었으며, 기본적으로 비효율적 인 문제가있었습니다

페이징 크기, 그런 것들 우리는 AsyncListUtil을 더 유용하게 사용했습니다 그러나 일을하기에는 너무 비효율적이었습니다 웹 거래를 좋아합니다 그래서 우리는 현대 안드로이드에 새로운 모델을 가지고 있습니다

우리는 데이터 페이징을 가지고 있습니다 이번 주 10 페이징 라이브러리, 그것에 대해 좋은 것들이 있습니다 따라서 RecyclerView와 함께 작동합니다 세분화 된 데이터 변경 사항을 처리합니다

훨씬 효율적으로 백그라운드 스레드를 아주 쉽게 사용할 수 있습니다 변경 사항을 관찰 할 수 있으므로 LiveData와 통합됩니다 그러나 다시 한번, 우리는 당신에게이 아키텍처를 강요하지 않습니다 RxJava2를 사용하고 있다면, 매우 쉽게 또한 유연한 데이터 가져 오기 옵션, 그래서 창 크기를 지정할 수 있습니다

그리고 이런 일들을 원할 때 물론, 항상 상충 관계가 있습니다 나는 데이터 페이징에 대해 나쁜 점을 발견했다 그 이름이 지루하다는 것입니다 ROMAIN GUY : 그래픽

그래서 우리가 안드로이드를 시작했을 때 우리는 OpenGL ES 10 만 가지고있었습니다 셰이더도 없었어요 우리는 소프트웨어 렌더링으로 모든 것을하고있었습니다 그것은 몇 년 동안 쟁점이었습니다

초기 장치에는 충분히 빠릅니다 우리가 타블렛 폼 팩터를 치면 문제가되기 시작했다 이전에는 9 개의 패치를 많이 사용했지만, 너의 일부는 고통 받았다고 확신한다 9 개의 패치를 작성함으로써, 또는 더 나쁜 것은 UX 디자이너에게 설명하려고 시도하는 것입니다 그것들을 만드는 법

검은 점들은 어디에 두 시나요? 그들은 어느쪽에 가야합니까? 나는 아직도 모른다 오늘날까지 TextureView 대 SurfaceView, 우리는 미리보기 토크에서 그걸 만졌어 기본적으로 항상이 문제가있었습니다 당신은 통합 할 수있는 덜 효율적인 TextureView를 사용합니까? ListView 및 애니메이션과 같은 다른보기와 더 좋게, 또는 SurfaceView를 사용합니까? 그리고 비트 맵 관리는 어려웠습니다

많은 사람들이 응용 프로그램을 만들었고 나간다 비트 맵을 만들려고했기 때문에 메모리 오류가 발생했습니다 당신은 캐싱을해야하며, 이것은 어렵습니다 그리고 우리의 대답은 근본적으로, 어, c'est la vie이었습니다 그래서 지금

OpenGL 31 및 32가 있습니다 콘텐츠 쉐이더가 있습니다 Vulcan을 사용하면 저급 그래픽 렌더링을 수행 할 수 있습니다

우리는 어디에서나 하드웨어 가속을 수행합니다 VectorDrawables는 기본적으로 대부분의 드로어 블을 대체했습니다 및 응용 프로그램의 비트 맵 우리에게는 작은 응용 프로그램이 있습니다 당신은 지원할 필요가 없습니다 – 여러 밀도를 지원하는 것이 훨씬 쉽습니다

이전과 같이 많은 배치를 필요로하지 않습니다 우리가 지금하고있는 일 우리가 너와 노력하고 있니? 아주 자주, 응용 프로그램 개발자는 솔루션을 찾기 위해 우리를 찾습니다 그러나 공동체가 – 즉, 너 – 우리가 생각하는 놀라운 도서관을 지어왔다 당신이 사용해야하는 것이 맞습니다 예를 들어 글라이드 (Glide) 또는 피카소 (Picasso) 또는 로티 (Lottie) 그들이하는 일에 뛰어납니다

비트 맵을 관리하려는 경우 또는 Lottie와 함께 미친 복잡한 애니메이션을 만들고 싶습니다 당신은 그것들을 사용해야합니다 우리는 뭔가를 재창조하는 데 시간을 낭비하지 않을 것입니다 이미 거기에 존재하고 우리는 생각합니다 그것이하는 일에 아주 능숙합니다

그러니 그 라이브러리를 사용하십시오 다시 한 번, 이것을 알아라 아마도 SurfaceView를 사용해야 할 것입니다 더 이상 TextureView가 아닙니다 시간이 오래되었습니다

마지막으로 우리는 당신의 코드를 프로파일 링하라는 말을 사용했습니다 우리는 가능한 한 작업을하지 말라고 말하곤했습니다 메모리 소비를 최소화 할 수 있습니다 하지만 이제는 더 나은 장치가 있습니다 우리에게는 많은 코어가 있습니다

우리는 많은 RAM을 가지고 있습니다 우리는 더 나은 언어를 가지고 있습니다 더 나은 런타임입니다 따라서 대신 코드 작성에 필요한 작업을 수행해야합니다 가능한 한 작업을 피하고 또한 최소화 메모리 소비

CHET HAASE : 그 장치가 밝혀지기 때문에 여전히 제약이있다 그 점을 명심해야합니다 배터리 수명은 중요하며 대역폭은 귀중합니다 이 모든 것이 사용자 경험에 기여합니다 따라서 사용자가 실제로 아직도 이런 것들에 대해 보수적이다

애플리케이션에 최상의 성능 제공 그게 맞아 우리는 당신에게 감사하고 싶다 그리고 다른 방법이있다 이것을 말하십시오 그리고 우리는 끝났다고 생각합니다

고맙습니다 [박수 갈채] [음악 재생]

블랙베리 안드로이드 앱 설치하기 (사이드로딩)

크롬브라우저를 실행시켜 '앱'메뉴를 선택합니다 ‘웹 스토어'를 선택합니다

검색창에 ‘BB10’을 입력하고 엔터키를 입력합니다 BB10/PlayBook App Manager을 버튼을 클릭하여 크롬부라우저에 추가합니다 앱의 권한을 승인하세요 앱 설치 완료! 윈도우에서 와이파이를 설정합니다 블랙베리에서도 WiFi 설정을 합니다

WiFi 텍스트를 선택합니다 WiFi 아이콘이 선택되지 않게 주의합니다 WiFi를 활성화하여 연결 가능한 목록을 확인합니다 윈도우에서 설정한 WiFi와 동일한 것을 선택합니다 ‘고급’ 기능을 선택합니다

‘진단 정보’의 ‘Wi-Fi 정보'를 '인터넷 연결’로 변경합니다 IP 주소를 확인합니다 WiFi 설정은 끝입니다 사이드로딩을 위해 '보안 및 개인정보' 설정을 합니다 ‘개발 모드'를 선택합니다

‘개발 모드'를 활성화 합니다 아래 IP 주소는 신경 쓰지 않습니다 ‘Device Hostnames/IPs' 에 블랙베리에서 확인한 IP 주소를 입력하고 ‘Save’ 버튼을 클릭합니다 ‘Manage your device:’ 부분이 생성되면서 방금 입력한 IP 주소가 출력됩니다 IP주소를 클릭합니다

SSL 문제로 ‘Your connection is not private’ 페이지가 출력됩니다 당황하지 말고 ‘Advanced’를 클릭합니다 좋습니다 지금 상태를 유지하며 아래 IP 주소를 클릭합니다 이제 마지막 관문입니다

블랙베리 패스워드를 입력하고 로그인을 하면 끝입니다 성공입니다 ‘Install Apps’ 버튼을 클릭하여 안드로이드 앱을 설치해보세요 물론 APK 파일은 따로 구하셔야합니다 ^^ 참고로, APK는 아니지만 snap 설치 성공 모습입니다

참고로, APK 파일의 설치 모습입니다