Tasks and the Back Stack (Android Development Patterns)

남성용 스피커 : 실행기 아이콘을 탭합니다 앱의 경우 앱이 실행됩니다

쉽지, 맞지? 배후에 무슨 일이 일어나고 있는지 조금 더 관련되어 있습니다 앱의 활동이 밝혀졌습니다 진공 상태로 살지 않고 대신 존재한다 하나 이상의 작업의 일부로 자, 작업 자체는 그다지 복잡하지 않습니다 그것은 단순히 활동의 스택입니다

시작 활동을 호출하면 새로운 활동이 푸시됩니다 작업의 백 스택에 넣습니다 뒤로 단추는 이것을 뒤집어 호출 마무리 현재 액티비티에서 스택에서이를 팝핑하고, 사용자를 원래 위치로 되돌립니다 그러므로 이름 이 대칭 푸시 – 팝 모델은 단편에도 적용됩니다

프래그먼트 트랜잭션을 지정할 때, 당신은 fragment를 추가하기 위해서 add to back stack을 호출 할 수있다 백 스택 트랜잭션 그런 다음 사용자가 뒤로 버튼을 누르거나 귀하의 활동이 끝나고 조각 거래 반대입니다 조각 트랜잭션이 더 이상 없을 때만 뒤로 버튼을 누르면 활동이 끝납니다 이제 뒤로 버튼을 누르는 대신, 당신은 홈 단추를 누르십시오, 전체 작업 백그라운드에서 넣어

런처 아이콘을 탭하면, 시스템은 태스크를 포 그라운드로 되돌려 보내고, 네가 그곳을 떠난 곳이야 선택하면 똑같은 일이 일어난다 개요 화면에서 앱의 작업, 작업이 포 그라운드로 이동됩니다 많은 앱에서이 기본 동작은 필요한 것입니다 거추장스럽지 않아

멋지고 일관된 대칭 연산 하지만 두 가지 구체적인 경우가 있습니다 특별한 일을하고 싶다 먼저, 액티비티로 시작 액티비티를 호출한다면 너 이미 벌써 왔어 검색 결과를보고있는 경우 일 수 있습니다

페이지를 검색하고 다시 검색하십시오 활동 후 활동을 쌓는 대신, 뒤로 버튼을 여러 번 눌러야하는 경우, 당신은 단일 가기의 실행 모드를 추가 할 수 있습니다 귀하의 활동 목록에 기재하십시오 또는 귀하의 의도에 깃발 활동 단 하나를 포함하십시오 생성되는 활동의 새 인스턴스 대신 시작 활동을 부를 때마다 당신은 새로운 의도로 다시 전화를받습니다 사용자는 뒤로 버튼을 한 번만 누를 수 있습니다

이전 활동으로 돌아갑니다 두 번째 경우는 알림 주위입니다 뒤로 버튼이 백 스택을 팝하는 방법에 대해 이야기했습니다 자연스러운 결론은 뒤로 버튼은 각기 다른 업무에 관여한다 안드로이드 3

0 이후 그것은 당신이 발사대로가는 곳으로부터 단지 하나의 스택입니다 멋진 개요 화면이 있다는 것을 기억하십시오 작업 전환 그 점에 대한 알림 앱 내부 깊숙한 활동 당신은 정말로 뒤로 버튼의 첫번째 언론을 원하지 않습니다

즉시 실행기로 데려다 줄 것입니다 당신이 그 같은 화면을 볼 때마다, 뒤로 버튼은 다른 것을 수행합니다 앱에서 돌아가는 것 그것은 TaskStackBuilder가 들어있는 곳입니다 그것은 합성, 즉 가짜, 다시 스택

기본적으로 부모 활동을 기반으로합니다 매니페스트의 각 활동 항목에 첨부했습니다 어떤 식 으로든 사용자 정의 할 수 있지만 당신이 원한다면, 엑스트라를 추가하고 싶습니다 이렇게하면 사용자가 도청 할 때 아무런 작업이 없더라도 알림, 그들은 정확히 어디에 그들이있어 앱에있을 것으로 예상됩니다 마치 그들이 그들 자신을 항해 한 것처럼

당신은 그 (것)들을 몇 시간 그리고 노력 거기 도착하는 저장했다 링크 된 블로그 게시물을 확인하십시오 작업에 대한 모든 설명에 대한 설명 백 스택 및 일부 다른 플래그들 당신이 사용해서는 안되는 모드를 시작하십시오 글쎄, 그들이 완벽 할 때까지 더 나은 앱을 만드는 데 사용할 수 있습니다

감사 잠깐, 그게 뭐야? 위로 버튼? 그래, 그건 완전히 다르다 블로그 게시물에서 논의 해 보겠습니다 [음악 재생]

Better share targets with Direct Share (Android Development Patterns S2 Ep 7)

제가 뭔가를 공유한다는 건 보통 그 순간 무언가가 정말 멋지다고 생각했기 때문이겠죠 그 말인즉, 만약 공유하는데 시간이 너무 많이 걸린다면 저는 아마 그냥 창을 닫고 공유하는 걸 포기할 것입니다

저는 조안나 스미스입니다, 여러분이 가장 싫어할 유저 타입이죠 사람들과 더 멋지게 공유하기 위해 안드로이드 마시멜로에서 새로운 기능을 소개합니다 다이렉트 쉐어 다이렉트 쉐어를 이용하면 사용자가 공유를 눌러 당신의 어플에서 공유할 대상을 설정할 수 있습니다 쉽게 말하자면 현재는 이렇습니다 언니에게 보여줄 재밌는 기사를 발견하면 공유를 누르고 당신의 어플을 선택하죠

그러면 어플이 시작됩니다 좋아요 하지만 다이렉트 쉐어를 이용하면 바로 언니를 선택할 수 있고 해당 기사가 이미 언니와의 대화창에 보내질 준비가 되어있는 상태로 어플이 켜질 것입니다 좋은 이용자 경험이란 바로 이런 거죠 공유할 대상을 설정하기 위해서는 ChooserTargetService에서 그룹을 정의하고 당신이 만든 서비스에서 OnGetChooserTargets를 시행해야 합니다

이 방법은 공유할 대상을 제안함으로써 공유를 활성화시킬 것입니다 OnGetChooserTargets가 바로 당신의 어플을 매력적으로 만들어줄 방법입니다 가장 최근의 대화창 10개를 불러들여도 되고 아니면 사용자가 가장 아끼는 사람이 누군지 알아낼 다른 방법을 제안해서 사용자의 친한 친구 목록을 대신 작성해줘도 되죠 아니면 단체 대화창 같은 특정한 대화창에서 첨부파일이 많다는 것을 알게 되면 그 대화창이 공유 대상이 되겠죠 어떻게 할 것인지는 당신에게 달려 있습니다

저희는 그냥 당신이 더 나은 어플을 만들 수 있도록 기능을 제공하는 것입니다 자, 이제 매니페스트를 업데이트해야 합니다 신규 서비스가 항상 그렇듯 이것 또한 표시해야 하는데 다른 서비스와 달리 저희는 BIND_CHOOSER_TARGET_SERVICE 허가가 있습니다 이것으로 시스템과 연동하여 암시적 인텐트와 공유 대상을 정확히 교환할 수 있습니다 물론 이 서비스를 Chooser Target Service로 적용할 인텐트 필터도 같이 말이죠

이것으로 공유를 활성활시킬 모든 준비는 끝났는데 만약 사용자가 당신의 옵션 중 하나를 선택하면 어떻게 되죠? 어플이 설치된 후에 제대로 작동을 해야 하는데 그러기 위해서는 특정 활동에 맞는 암시적 인텐트를 설정해야 합니다 그럴려면 메타 데이터가 있어야 하죠 하지만 그게 전부에요 간단하죠 당신의 어플에서 다이렉트 쉐어를 이용하고 싶으시면 저희가 제공하는 재미있는 샘플을 구경해보세요

아래에 링크가 있습니다 아니면 저희 서류를 살펴보셔도 됩니다 하지만 더 중요한 건 계속 멋진 어플을 개발해주세요 [음악 재생]

Android app development tutorial #19( Android Xml Layout Design-2 )

지금 당신 당신 당신 좋아, 내 레이아웃 섹션 꿀벌 n을 완료했습니다 그리고 당신은 사용자가 볼 수 있습니다 섹션 리사이클 러가있는 내부 레이아웃을 제공했습니다

보기와 하나의 진행 막대가있는 리사이클 러 뷰는 모든 사용자 목록 괜찮아요받는 사람 메시지에서 여기 한 사람은 상대입니다 레이아웃은 부모 레이아웃이고 내부는 선형을 제공합니다 방향이 수평이고 내가 제공 한 안쪽의 레이아웃 오리엔테이션이 수직 인 또 다른 선형 레이아웃과 체중 중 하나는 영점 5이고 다른 하나는 괜찮습니다 편도 선형 레이아웃은 x에 대한 텍스트보기를 유지하고 다른 하나는 메시지는 괜찮아요

나는 배경을 chat background 이것은 드로어 블 내부에서 생성 한 셰이프입니다 폴더 괜찮아요 및 발신자에 대한 동일한이 차이를 한 적이 있다는 것입니다 그 부모의 끝은 부모의 오른쪽에있는 정렬이다 그것은 수령인에게 당신이 왼쪽에 부모 정렬을 볼 수 있다고 말했고 모든 것이 동일하고 단지 배경이 다른 것입니다 솔리드 및 솔리드 컬러 나는 사용하지만받는 사람 섹션에서 나는 획을 긋고 내가 제공 한 사용자 프로필에서 여기 상대 레이아웃과 동일하고 하나의 원형 이미지보기 내부 내가 평소에 가지고있는 외부의 Gradle 파일이고 텍스트보기입니다 사용자 이름을 보유하고 다른 사용자 이름은 텍스트보기로 연결되었거나 사용자의 상태를 볼 수 있습니다

그것은 오늘날 우리의 개요 인 온라인입니다 그래서 오늘 그 사람들이 업로드하고 있습니다 소스 코드도 그래서 내 설명에 소스 코드의 링크를 얻을 수 있습니다 그것은 오늘입니다 그리고 우리는 다음 강의로 계속 진행할 것입니다 내 채널을 더 구독하십시오

당신

Broadcast Receivers (Android Development Fundamentals, Unit 3: Lesson 7.3)

[음악 재생] 발표자 : Android 애플리케이션은 아무 것도하지 않습니다 특정 유형의 메시지가 나타날 때까지 안드로이드 운영 체제에 의해 방송, 또는 다른 응용 프로그램

앱이 어떤 방식 으로든 반응하기를 원한다고 가정 해 보겠습니다 시스템 이벤트가 발생할 때 예를 들어, 음악 앱을 만들 수 있습니다 그리고 앱을 실행하고 싶습니다 헤드폰이 연결되어있을 때 음악 재생을 시작하려면, 헤드폰을 제거하면 음악 재생이 중단됩니다 이러한 이벤트가 발생할 때 앱에서 어떻게 알 수 있습니까? 음, 여기에 우리는 브로드 캐스트 리시버가 있습니다

몇 분 후에 이해할 수 있습니다 이 전체 메커니즘은 구현과 관련됩니다 방송 의도와 방송 수신기의 그래서이 세션에서 우리는 방송 의도가 시스템 전반의 메시지를 방송하는 방법 다른 구성 요소와 방송 수신자의 청취 방법 해당 특정 방송 의도에 대해 또한 사용자 정의 브로드 캐스트를 작성하는 방법도 배웁니다 보안 문제에 대해서도 논의 할 예정입니다 로컬 브로드 캐스트를 사용하여이를 극복하는 방법 앱 내에서 브로드 캐스트를 전송할 수있게 해줍니다

대신 시스템 전체 응용 프로그램 브로드 캐스트 인 텐트는 브로드 캐스트되는 인 텐트 개체입니다 의사 소통을 돕는 의도 두 구성 요소 사이 따라서 시작을위한 메커니즘을 제공하는 것 외에도 응용 프로그램 활동, 의도 또한 방법으로 사용됩니다 시스템 전반의 메시지를 다른 구성 요소에 브로드 캐스트하는 방법 시스템에

이 메커니즘에서 여기에 방송 의도 사용 된 의도와 완전히 별개입니다 활동을 시작하려면 사용자가 현재 상호 작용하고있는 것을 보여 주며, 시작 활동에 보냅니다 달성하려는 하나의 활동에만 영향을줍니다 특정 작업 반면, 방송 의도는 백그라운드 작업입니다

사용자가 일반적으로 알지 못하는 sendBroadcast를 통해 전송됩니다 기본적으로 여러 응용 프로그램에 영향을 줄 수 있습니다 인 텐트를 수신하기 위해 등록 된 방송 수신기는 구성 요소입니다 어떤 일이 일어나고 있는지를 듣고 등록 할 수 있습니다 시스템 또는 응용 프로그램 이벤트의 경우, 그들이 응답으로 무언가를한다는 것을 의미합니다

방송되는 그 메시지에 응용 프로그램은 특정 들어오는 이벤트를 수신합니다 sendBroadcast에 의해 보내지고, 방송을 등록함으로써 리시버 방송 의도가 발생할 수 있음 특정 이벤트가 발생했을 때 시스템에서 체계 예를 들어, 화면을 알리는 방송 꺼 졌거나 배터리가 부족한 경우, 또는 그림이 캡처되었습니다

또는 다른 응용 프로그램에서 유래 할 수 있습니다 음악을 시작할 때 앱을 설정할 수도 있습니다 당신은 헤드폰에 연결합니다 따라서 메시지를 받으면 백그라운드에서 실행됩니다 그 헤드폰이 연결되어 있고 발사로 응답 귀하의 음악 응용 프로그램

방송 사업자 수신기는 사용자 인터페이스를 표시하지 않지만, 활동이 종료 된 경우에도 백그라운드에서 실행됩니다 예를 들어 음악 앱에서 알림을 게시하는 경우 다가오는 헤드폰 이벤트에 대해 사용자에게 알리기 위해 연결되면 상태 표시 줄 알림을 만들 수 있습니다 브로드 캐스트 이벤트가 발생할 때 사용자에게 경고합니다 따라서 방송 수신기가 구현됩니다 Android 브로드 캐스트 수신기 클래스 확장 onReceive 메소드를 오버라이드 (override)하는 것

특정 브로드 캐스트 인 텐트를 청취해야합니다 브로드 캐스트 인 텐트가 수신되어 전달 될 때 onReceive에게,이 시점에서, 메소드 필요한 모든 작업을 수행하는 데 5 초가 걸립니다 수신기가 파괴되기 전에 브로드 캐스트 리시버가 필요하지 않습니다 항상 뛰는 것

일치하는 인 텐트가 감지 된 경우, Android 런타임 시스템이 자동으로 실행됩니다 전화하기 전에 방송 수신기를 시작하십시오 onReceive 메소드 시스템이 부팅을 완료하는 것처럼, 또는 무선 네트워크 연결이 끊어집니다 Wi-Fi 상태가 변경 될 때 따라서 표시된대로 이러한 작업을 지정할 수 있습니다

앱의 인 텐트 필터 내부 화면 앱이 맞춤 의도를 브로드 캐스팅 할 수도 있습니다 이는 개발자가 정의한다는 의미입니다 사용자 정의 인 텐트에는 사용자가 화면에서 제공 한 데이터가 포함될 수 있습니다 해당 응용 프로그램이 사용자 정의 의도를 브로드 캐스팅하도록하려면, 우리는 하나를 보내야합니다 관심있는 모든 방송에 인 텐트를 브로드 캐스트하려면 수신기에는 두 가지 주요 방송 클래스가 있습니다

일반 방송을 사용하십시오 sendBroadcast 메서드를 사용하여 보내집니다 또는 주문 방송과 함께 전송됩니다 sendOrderBroadcast 메소드와 함께 따라서 사용자 정의 의도를 전송 한 후, 수신기를 등록해야합니다

사용자 정의 의도 및 의도에 대한 동작을 정의합니다 androidmanifestxml 안의 수신기 용 필터 SendBroadcast 메서드가 완전합니다 비동기, 즉 브로드 캐스트 이벤트 또는 인 텐트 모든 수신기에 의해 수신된다

비동기식으로 수신기는 정의되지 않은 순서로되어 있으며, 종종 동시에 효율적이지만 수신자는 다른 사람의 결과를 사용할 수 없습니다 수신기 sendOrderBroadcast는 한 번에 하나의 수신자에게 전달됩니다 각각의 수신기가 인 텐트를 실행함에 따라, 결과를 다음 수신자에게 전파 할 수 있으며, 또는 방송을 완전히 중단시킬 수 있습니다

그래서 그것은 다른 수신기들에게 전달되지 않을 것이다 다른 수신기는 제어 할 수 있습니다 일치의 androidpriority 속성과 함께 의도 필터 우선 순위가 동일한 수신자는 임의의 순서로 실행됩니다

수신자가 결과를 전파 할 수있게하려면 또는 방송을 중단하려면 방송을 주문해야합니다 sendOrderBroadcast를 사용합니다 이 방송 전체 메커니즘이 어떻게 작동하는지 이해합시다 수신기가 구현 될 수있다 브로드 캐스트 리시버를 생성하기 위해서는 다음 단계가 필요합니다 새로운 클래스를 만들어야합니다

브로드 캐스트 리시버의 서브 클래스입니다 이베이스의 onReceive 메소드를 구현 한 클래스 수업 이벤트가 발생할 때마다 Android onReceive 메서드를 호출합니다 응용 프로그램이 특정 브로드 캐스트 인 텐트를 청취합니다 방송 수신기를 등록함으로써 두 가지 방법으로 코드를 등록 할 수 있습니다

(예 : 활동 내 또는 매니페스트 파일 내) 방송 수신기들을 정적으로 등록하기 위해, AndroidManifestxml에 등록하십시오 방송을 등록함으로써 동일한 효과를 얻을 수있다 수신기를 프로그램 적으로 또는 동적으로, 액티비티 클래스의 register receive 메소드 사용 적절한 구성 의도가있을 때 함께 그 대상과

화면에서 보듯이 Android 브로드 캐스트 수신기를 확장하는 클래스입니다 이런, 이런 여기서 onReceive 메소드를 볼 수 있습니다 보시다시피, 이것은 브로드 캐스트 수신기가 Android 브로드 캐스트 수신기를 확장하여 구현됩니다 onReceive 메소드를 오버라이드 (override)합니다

그래서 CustomReceiver라는 새로운 클래스를 만들었습니다 BroadcastReceiver를 확장 중입니다 그래서 방송 수신기를 만든 후에, 우리가 아는 다음 단계는 그것을 등록하는 것입니다 AndroidManifest로 한 번 시도해 보겠습니다 여기서 수신기 항목을 추가해야합니다

하나 이상의 인 텐트 필터를 포함하고, 각각은 브로드 캐스트 인 텐트의 액션 문자열을 포함한다 수신자가 요구되는 예제에서 볼 수 있듯이 특정 의도를 나열합니다 그리고 다른 구성 요소와 마찬가지로, 우리는이 receiver 요소를 application 요소 안에 정의한다 대안 적으로, 정적 등록을 통해, 수신자를 등록 및 등록 취소 할 수도 있습니다 컨텍스트 클래스를 통해 한 번에 수신기 메서드를 등록합니다 onCreate 또는 onResume 활동 메소드에서

그리고 onDestroy에서 수신기 메소드를 등록 취소합니다 또는 onPause 액티비티 메소드에서 슬라이드의 맨 아래에 코드 스 니펫이 표시됩니다 그리고 당신이 볼 수 있듯이, 활동의 등록 수신기 방법 적절하게 의도를 구성했을 때 함께 수업을 진행하다 개체에 대한

동적으로 registerReceiver 등록을 잊지 마라 수신자 등록 방법을 사용하여 이것을 잊어 버리면 안드로이드 시스템 유출 된 브로드 캐스트 리시버 오류를보고합니다 예를 들어, 수신을 등록한 경우 inResume 활동의 메소드, onPause 메서드 내에서 등록을 취소해야합니다 방송 수신기는 Android의 매우 중요한 구성 요소입니다

몇 가지 중요한 시스템 목록이 있습니다 액션 런타임이 변경된 것과 같은 이벤트는, 또는 시스템 부팅이 완료되었을 때, 그리고 훨씬 더 이 방송 활동을 확인해보십시오 이 링크에서 onReceive 메소드 구현에 대해 이야기했습니다

방송 수신기 클래스의 기본 클래스의 방송 수신기가 갖는 이벤트가 등록 된 사건, onReceive 메서드 수신자의 전화 번호는 Android 시스템에 의해 호출됩니다 여기서는 onReceive 메서드를 보여줍니다 두 개의 인수를 취합니다 문맥

액세스에 사용할 수있는 컨텍스트 개체 추가 정보 또는 서비스 또는 활동 시작 두 번째로, 의도 객체, 액션 당신은 수신기를 등록하는 데 사용할 수 있습니다 사용자 지정 브로드 캐스트, 동작 문자열 고유 한 브로드 캐스트 이벤트를 식별하는 일반적으로 응용 프로그램의 Java 패키지를 사용합니다 이름과 텍스트 예를 들어, 다음 브로드 캐스트 고유 한 동작 문자열을 포함하는 의도, 패키지 이름을 접두사로 포함합니다 이 작업을 설명해야합니다

활동 및 방송 수신기에서도 마찬가지입니다 당신은 우리가 어떻게 사용자 정의 의도를 보냈는지 알고 있습니다 우리가 가지고있는 sendBroadcast 메소드를 사용하여 이전 슬라이드에서 배웠습니다 그래서 여기에 다음을 사용하여 액션을 첨부하는 방법이 있습니다 사용자 정의 인 텐트

등록을 취소하는 코드는 다음과 같습니다 귀하의 등록 된 방송 수신기, unregisterReceiver 메소드를 호출하여 Android는 보안 기능과 작업을 통합합니다 개발자 및 장치 구현 자와 Android 플랫폼 및 생태계를 안전하게 유지합니다 우리가 방송 수신기로 작업 할 때, 보안 측면에서 몇 가지 사항을 고려해야합니다

그래서 하나씩 이해합시다 Android 애플리케이션에서 브로드 캐스트 사용 문맥과 함께 사용되는 수신기처럼 때로는 문제를 일으킨다 다른 응용 프로그램에서도 수신 할 수 있습니다 따라서 앱 간 경계를 고려해야합니다 의도 네임 스페이스는 전역입니다

의도 동작 이름 및 기타 문자열이 자신이 소유 한 네임 스페이스에 쓰여 있거나, 당신은 다른 응용 프로그램과 충돌합니다 등록 수신자 메소드를 사용할 때, 다른 응용 프로그램이 브로드 캐스트를 보낼 수 있습니다 등록 수신기에 브로드 캐스트를 보낼 수있는 사람을 제어 할 수 있습니다 사용 권한을 사용하여

그리고 방송을 보내거나 메시지를 보낼 때, 일반적으로 다른 모든 응용 프로그램이이 브로드 캐스트를 수신 할 수 있습니다 그러나 이러한 브로드 캐스트를 수신 할 수있는 사용자를 제어 할 수도 있습니다 권한을 통해 즉, 액세스 권한을 적용 할 수 있습니다 발신자 또는 수신자

전송할 때 권한을 시행하려면, 당신은 허가 인수를 제공한다 방송 전용 수신기를 보내려면 요청하여이 허가를 받았다 manifestxml 파일에 사용자 권한 태그 포함 방송을 수신 할 수 있습니다 이 수신기는 브로드 캐스트 인 텐트를 수신합니다

필요한 권한이 있어야합니다 그리고 수신 할 때 허가를 얻기 위해, 등록 할 때 허가를 당신의 수신기, registerReceiver 또는 AndroidManifestxml의 수신자 태그에 추가하십시오 그래서 유일한 방송사는 사용자 권한을 사용하여이 사용 권한이 부여되었습니다 태그가 AndroidManifest

xml에 있습니다 수신자에게 의도를 보낼 수 있습니다 보안 문제가 전혀 존재하지 않습니다 로컬 브로드 캐스트 매니저 클래스를 사용할 때 보안 통신 메커니즘을 구현하는 데 사용 되었기 때문에 앱 구성 요소 내에서 로컬 브로드 캐스트 관리자를 사용하여 브로드 캐스트 및 등록 수신기는 거기에서 안전한 방법을 제공합니다 앱 간 통신이 없습니다

슬라이드 하단의이 예 로컬 브로드 캐스트 관리자를 사용하여 보내고받는 방법을 보여줍니다 방송 인 텐트 오브젝트를 생성하는 것만 큼 쉽습니다 그 의도 객체를 사용하여 sendBroadcast를 호출하고 같은 registerReceiver에 대해서도 마찬가지입니다 onResume에서 의도 필터는입니다

지정된 동작을 위해 수신기를 등록하기 위해 생성됩니다 의도 필터 생성자는 작업을 매개 변수로 사용합니다 따라서이 작업으로 브로드 캐스트를 수신 할 수 있습니다 이 코드는 리시버를 등록하는 방법을 보여줍니다 로컬 브로드 캐스트를 사용하여 의도 필터 사용 매니저와 registerReceiver

그 후에, 수신기는 능력을 가지고 있습니다 지정된 액션으로 브로드 캐스트 받기 ACTION_CUSTOM_BROADCAST 자세한 내용은 참조 자료를 확인하십시오 방송 수신기에 대한 링크 다음 실용적인 방법은 구현시 실습에 도움이됩니다

방송 수신기의 계속 배우고 지켜봐 주셔서 감사합니다

Broadcast Receivers DEMO (Android Development Fundamentals, Unit 3: Lesson 7.3)

[음악 재생] 안녕하세요 다시 오신 것을 환영합니다

이제 브로드 캐스트의 개념을 이해하게되었습니다 수신기, 이제 작은 데모를 살펴 보겠습니다 여기에 응용 프로그램을 만들겠습니다 나는 그것을 MyBroadcastReceiver와 Demo라고 부를 것이다 그리고 최소 15 개의 API 및 빈 활동으로 사용하려고합니다

활동 이름을 주 활동으로 명명하십시오 activity_main과 같은 레이아웃 따라서이 응용 프로그램에는 두 부분이 있습니다 먼저, 내장 브로드 캐스트 리시버를 호출 할 것입니다 배터리가 낮은 방송 수신기라고 가정 해 봅시다

두 번째 부분은 사용자 정의 브로드 캐스트 리시버 호출입니다 그래서, 내가 무엇을 할 것인지, 나는 그 방송을 방아쇠를 당길 것이다 수신자 메시지를 수신한다 그리고 다른 응용 프로그램을 만들어서 이 메시지를 경청하십시오 그리고 거기에 방송 수신기가있을 것입니다

걱정하지 마라, 우리는 그 순간에 도착할 것이다 그러나 먼저 우리가 첫 번째 부분을 이해하게하고, 그것이 내 내장형 방송 수신기를 정확히 호출 할 수있는 방법입니다 먼저 좋은 UI를 만들어 보겠습니다 모든 항목을 삭제하면 텍스트보기가 생성됩니다 그리고이 텍스트를 방송 수신기라고 부를 것입니다

글꼴을 늘리면 30sp가됩니다 좋아요, 철자법을 바로 잡을 겁니다, 폭풍, 방송 수신기 큰 확인 다음으로 버튼을 만들겠습니다 그리고 그 버튼을 In-Built라고 부르 겠어요

방송 수신기 그래서이 사람이 내 내장 방송을 부를거야 리시버 따라서이 버튼을 호출하려면, XML 내부에 OnClick 특성을 만들어야합니다 그래서 나는 OnClick을 할 것이고, 나는 메소드 이름은 callInbuilt입니다

승인, 자바 파일에 같은 메소드 이름을 넣어야합니다 Alt, Enter– 거기 있네 큰 그래서 나는 코드를 넣을 메소드가 있습니다 내 브로드 캐스트 리시버에 전화하기

우리 모두는 이것을 개념으로 보았습니다 방송 수신기를 생성하기 위해, 클래스를 확장하여 Java 클래스를 만들어야합니다 BroadcastReceiver 그런 다음 매니페스트 파일에 항목을 입력해야합니다 그래서 나는 그것을 수동으로하거나 쉬운 방법이 있습니다

개발 패키지를 마우스 오른쪽 버튼으로 클릭하십시오 New로 이동하십시오 기타로 이동하십시오 그리고 당신의 방송 수신기가있을 것입니다 그것을 클릭하고 브로드 캐스트 리시버의 이름을 지정하십시오

BroadcastMy1이라고 부르자 이름을 지정할 수 있습니다 그럼 BroadcastFirst로 만들어 보겠습니다 또는 BroadcastInBuilt 그래, 그건 의미가있어

BroadcastInBuilt 이제 내보내기 및 활성화되었습니다 그것을 내 보냅니다 다른 응용 프로그램이 그것을 사용하거나 또는 – 그리고 당신은 그것을 가능하게하고 싶습니다 그래서 당신에게 달렸습니다

다른 응용 프로그램을 원하지 않으면 이 방송 수신기를 사용하려면이 확인란을 선택 취소하십시오 현재로서는 두 가지를 모두 확인하고 있습니다 이제 이걸 볼 수 있습니다 방송 수신기의 도트 Java 파일이 있습니다 그리고 그 안에, 당신이 슬라이드에서 본 것처럼 또한, 하나의 추상적 인 방법이있다

재정의해야합니다 그건 onReceive입니다 그리고 이것은 당신이 코드를 제공 할 곳입니다 브로드 캐스트 또는 메시지에서 데이터를 수신하려면 방송되었습니다 그리고 이것은 모든 멋진 응용 프로그램, 모든 소셜 애플리케이션 – WhatsApp, Facebook, Twitter – 알림 코드를 입력합니다

추가 세션에서 알림 코드를 배우게됩니다 그러나 지금 당장은이 특정 방송 호출되면, onReceive 메소드가 나오고, 그리고 이것은 코드를 넣는 곳입니다 당신은 당신의 사용자를 보여주고 싶습니다 알림을 학습하면 알림 코드를 입력합니다 이리

이제 매니페스트 파일에서 체크 아웃 할 수 있습니다 등록되었거나 등록되지 않았습니다 알았지? 매니 페스트 파일에이 수신기가 실제로 등록되어 있습니다 따라서 수동으로 입력 할 필요조차 없습니다 그래서 이것이 이름입니다

이제 한 가지 더 취해야 할 것이 있습니다 수신기 클래스에 코드를 넣기 전에주의를 기울여야합니다 이 특정 수신기에 동작을 제공해야합니다 또는이 특정 구성 요소 우리 모두는 정확히 어떻게 할 수 있는지 알고 있습니다

그것은 의도 필터 태그의 도움을받습니다 어떤 종류의 행동을 원하니? 이 수신기가 듣고 싶어 이제는 내장 된 메시지가 필요합니다 나는 관습을 만들지 않을거야 그래서 나는 내장 된 메시지를 듣게 될 것입니다

자, 어떤 종류의 메시지가 될 수 있습니까? 모든 메시지가 될 수 있습니다 당신의 힘이 연결될 때 일 수 있고, 또는 전원이 연결되지 않았거나 배터리가 – 여기에 넣으려는 모든 내장 된 메시지, 여기에 넣을 수 있습니다 따라서이 수신기는 이러한 메시지에 반응합니다 그러므로 배터리를 낮추게하십시오 따라서 특정 비율 후에, 당신의 건전지가 낮게되는 경우에, 이 브로드 캐스트 리시버가 호출됩니다

카테고리를 넣으려면 카테고리를 넣을 수 있습니다 저것의 아무 필요도 없다, 그러나 그렇습니다, 그것은이다 당신이 원한다면 좋은 연습 기본적으로 각 구성 요소 이 기본 범주가 있습니다 이제는이 특정 수신기가 호출됩니다 배터리 수명이 단축 될 때마다 특정 비율, 어쩌면 20 %, 어쩌면 15 %보다, 사용중인 장치에 따라 다릅니다

그러나 당신이 행동에서이 수신자를 볼 때마다, 이제 두 개의 수신기가 보일 것입니다 첫째, 수신기 당신이 방금 만든 것입니다 그리고 어디서나 응용 프로그램을 실행하고 있습니다 지금 어디서나 – 또는 사용할 장치를 선택하십시오 해당 장치에는 자체 수신기가 있어야합니다

Android를 사용하고 있다면 전화, 배터리가 15 % 또는 20 % 이하로 떨어지면, 너는 통고를 받는다 이미 앉아있는 수신기가 있습니다 누가 저전력 배터리를 청취하는지 전원 또는 배터리 부족 따라서 두 번째 수신기를 만들었습니다 이제 두 가지 알림이 표시됩니다

나는 알림을 만들지 않을 것이다 그러나 나는 축배를 확실히 창조 할 것이다 그래서 토스트, 내가 그것을 알 수 있도록, 좋아, 내 토스트가 호출되었습니다 그래서 내 수신자가 처리되고 있습니다 그래서 컨텍스트 객체가 필요합니다

브로드 캐스트 수신기 클래스 자체에는 컨텍스트가 없습니다 목적 그래서 여기에 넣을 수 없습니다 그러나 onReceive 메서드에는 컨텍스트 개체가 있습니다 그래서 나는 맥락을 넣을 수 있습니다

그리고 내가 보여주고 싶은 메시지는 배터리가 부족하다고 가정 해 봅시다 청구하십시오 원하는 기능을 무엇이든간에 너 여기두고 싶어 요금 그리고 나서 요금

그리고 나서 보여줘 큰 좋아, 일단 그렇게하면 지금해야 할 일 모두 이 응용 프로그램을 실행하는 것입니다 맞습니까? 하지만 지금 당장 버튼을 클릭하면 아무것도 안 일어날거야 버튼 하나만있을거야

그리고 너는 아무것도 할 수 없을거야 OnClick 내부에 제공된 코드가 없으므로 방법 그래서 여기 보시나요? 아무것도 일어나지 않고있다 그렇다면 방송 수신기를 어떻게 불러 옵니까? 우리 모두는 그것을 압니다 의도라는 이름의 학급 만의 도움으로, 맞습니까? 의도, i1은 새로운 의도와 동일합니다

그리고 이번에는 의도적으로 행동을 취할 것입니다 하나 더 죄송 해요 우리는 여기에 의도를 넣을 필요조차 없습니다 왜? 기본적으로 이미 무엇을 듣고 있습니까? 배터리가 부족합니다

그리고 배터리가 부족하면 배터리가 작동합니까? 배터리가 부족한 경우 그래서 우리는이 의도 부분에 도달 할 것입니다 우리가 주문 수신기를 할 때 그럼 지금 당장 보자 그래서 현재 로선 배터리가 적지 않다는 것을 알 수 있습니다

그렇다면 어떻게 사용자 정의 할 수 있습니까? 그래서 내 응용 프로그램이 실행 중입니다 그렇다면이 특정 배터리 전원을 어떻게 사용자 정의 할 수 있습니까? 더보기로 이동하십시오 여기에서 배터리 옵션을 볼 수 있습니다 이제, 먼저 배터리가 아닌지 확인해야합니다 AC 충전기에

켜져있어 AC 충전기에 아직도 있다면, 그 건전지 낮은 것에 결코 도달하지 않을 것이다 배터리 상태가 충전되는 대신 OK입니다 충전기 연결을 없으면, 이제 배터리 수준을 낮추십시오 보시다시피, 당신이 그것을 낮추 자마자, 두 가지 알림이 나타났습니다

하나는 시스템에서 왔는데 여기에서 알림을 보았습니다 그리고 하나는 축배였습니다 내가 너를 위해 다시 해줄거야 좋아, 너 언제 내려 가니? 배터리 부족 요금을 청구하고 거기에서 통보하십시오

그래서 그게 제가 말하고있는 것입니다 내장 브로드 캐스트 리시버를 호출 할 수있었습니다 여기에 자신의 응용 프로그램에서 호출하지 않고도 그 방송 수신기가 듣고 있기 때문에 특정 행동을 위해 그것은 낮은 배터리 전력입니다 그래서 이것이 당신이 호출하는 방법입니다

이제 맞춤형 브로드 캐스트 수신기에 대해 이야기 해 봅시다 그래서 그 버튼을 다시 만들 것입니다 나는 Inbuilt라고 부를 것이다 아니 나는 그것을 외부라고 부를 것이다

그것을 Custom이라고 부르세요 맞춤형 방송 됐어 그리고이 특정 단추를 부를 때, 나는 관습에 전화해야 해 그래서 우리는 정말로 필요 없다는 것을 알았습니다

이 호출은 내장되어 있습니다 괜찮아 당신은 아무것도 넣지 않아도됩니다 그러나 어떤 시점에서, 당신이 그 버튼을 클릭 할 때, 당신이해야 할 일은 당신이 할 수있는 일입니다 이제는 내 맞춤 방송을 들려주는 곳입니다

수신기 코드 하지만, 우선, 나는 필요하다 커스텀 브로드 캐스트 리시버를 생성합니다 어떻게해야합니까? 개발 패키지를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기로 이동 한 다음, 다시, 기타 및 브로드 캐스트 리시버로 이동하십시오 그리고 그것을 Custom Broadcast라고 부를 것입니다

그리고 이것 안에서, onReceive 안에서, 나는 우리가 텍스트라고 부르는 건배를 올릴거야 텍스트를 보자, 보자, 문맥, 첫 번째 수신자가 호출되고 길이가 짧습니다 쇼 큰 그래서 내 onReceive 방법이 준비되었습니다

그리고 수신기가 준비되었습니다 이제 내가해야 할 일은 내 매니 페스트 파일로 이동하는 것뿐입니다 내 매니페스트 파일에 이미 등록되어 있습니다 내가해야 할 일은 여기에 행동을 제공하는 것뿐입니다 그러면 어떻게 행동을 제공합니까? 의도 필터를 제공합니다

그리고 나는 행동을 제공 할 것이다 자, 이번엔, 나는 원하지 않는다 모든 내장 작업을 제공합니다 내 자신의 행동을 쓰고 싶다 커스텀 브로드 캐스트 리시버가 될 수 있습니다

이것이 실제로 각각의 모든 애플리케이션 – WhatsApp, Facebook 또는 Twitter – 그들은 그들 자신의 행동을 취한다 그리고 그것은 그들 자신의 것입니다 그걸 알 수는 없지, 그렇지? 자신 만의 응용 프로그램을 만드는 경우, 당신도 당신 자신의 행동을 취할 필요가 있습니다 뭐든지 될 수있어, 알았지? 그래서 저는 [[? commy

dotlalitownreceiver ?] 무엇이든 넣을 수 있습니다

나는 이것을 넣을거야 뭐든지 넣을 수 있습니다 이 액션 이름을 기억하십시오 이 작업 만 수행하면 이 브로드 캐스트 리시버가 호출됩니다 그리고 다시, 나는 디폴트를 두겠다

좋아요, 그래서이 수신기에도이 행동을 제공했습니다 지금해야 할 일은, 나의 주요 활동에서, 이런 종류의 수신기를 호출하는 코드를 넣어야합니다 그럼 어떻게 하죠? 보내다 다시, 나는 의도를 사용할 것이다 i1, 새로운 의도

이제 저는 행동을 취할 행동을 취할 것입니다 그리고 나는 놓을 수있다 그 행동은 방금 여기에 보관했던 것과 정확히 같아야합니다 실수를하지 않도록 동일한 동작을 복사하십시오 그것을 쓰는 동안

그런 다음 i1addcategory 다시 카테고리 또한 기본값과 동일한 범주를 지정하십시오 다시, 나는 복사하고있다 그런 다음 여기에 붙여 넣으십시오

그 후, 일단 당신이 당신의 의도를 준비하면, 이 메시지를 방송하면됩니다 이 행동을 방송하면 방송 될 것이다 전체 안드로이드 시스템 그리고 누구든지 방송 수신기는 이 특정 행동을 경청하면, 그들은 부름을받을 것이다 그러면 어떻게해야합니까? 방송을 보내고 귀하의 의도를 전달하십시오

이제, 전체 Android 시스템으로 전송됩니다 그리고 애플리케이션이 이미 설치되어 있다면, 브로드 캐스트 리시버가 설치되어 있어야합니다 이 특별한 행동을 위해 그래서 항상이 메시지를 듣게 될 것입니다 그리고 그것은 호출됩니다

브로드 캐스트 수신기 클래스가 호출됩니다 그리고 그것은 onReceive로 갈 것입니다 수신자를위한 건배가 있습니다 그리고 그것이 당신의 결과물이 될 것입니다 그 버튼을 클릭하면 어디 보자

실행 버튼을 클릭하십시오 자, 이제이 응용 프로그램을 실행 해 봅시다 실행 버튼을 클릭하십시오 좋아, 이제 내 응용 프로그램이 실행 중임을 알 수 있습니다 먼저이 버튼을 클릭하십시오

그건 맞춤 방송이고, 저에게 축배를 보여줘야합니다 됐어 그래서 정말로, 내 방송 수신자는 이것을 위해 등록되었습니다, 그 동일한 메시지를 듣고 있습니다 그것이이 수업으로 돌아간 이유입니다 이 토스트 메시지를 실행했습니다

이것이 맞춤형 방송 수신기를 만드는 방법입니다 이제, 그것은 응용 프로그램 내에 있었던 것입니다 이 브로드 캐스트 리시버가 생성되었습니다 이 응용 프로그램 내에서 새 응용 프로그램을 만들면 어떻게됩니까? 그리고 그 응용 프로그램에서 나는 또 다른 방송을 만든다

수신기 및 그 방송 수신기 이 같은 메시지, 동일한 관례를 듣고있다 메시지? 이제 어떻게 될까요? 음, 이번에는 두 개의 방송 수신기 호출됩니다 즉, 하나는이 응용 프로그램 자체 내부입니다 그리고 다른 하나는이 두 번째 응용 프로그램에서 왔습니다 그럼 그냥 보자

나는 또 다른 프로젝트를 만들 것이다 새 프로젝트 나는 빈 활동을 위해 MyBroadcastDemo02라고 부를 것이고, 마침 이 특정 제 2 적용에서, 나는 정말로 아무것도 할 필요가 없다 하나의 브로드 캐스트 수신기 만 포함하면됩니다

나는 심지어 UI에 대해 걱정하지 않는다 이 응용 프로그램을 열지 않기 때문에 나는이 어플리케이션을 거기에 놓기를 원한다 듣는 브로드 캐스트 수신기가 있어야합니다 특정 메시지

그게 전부 야 그래서 나는 단지 New에 가서 다른 사람들에게 갈 것입니다 Broadcast Receiver를 클릭하고 MyBroadcast02라고하십시오 몹시 떠들어 대다 그리고 onReceive 내부에서 다른 메시지를 넣을 수 있습니다

toastmaketextcontext 두 번째 수신자, 네, 제 2 수신기 – 전화가 무엇인지보고 길이가 짧고 점으로 표시됩니다 자, 여기이 전화는 오직 호출됩니다 이 특정 방송에 행동을 제공하면 수신자가 매니페스트 파일에 있어야합니다

보시다시피 이미 등록되어 있습니다 같은 행동을해야합니다 이전 브로드 캐스트 리시버에주고 있었다 동일한 메시지 방송을 듣고 싶다면, 그래서이 전체 의도 필터를 복사하십시오 수신기에 붙여 넣으십시오

이제이 방송 수신기는 그 같은 메시지를 듣고 당신이 할 일은 단지 설치하는 것뿐입니다 한 번만이 응용 프로그램을 실행하십시오 에뮬레이터 또는 장치에 설치됩니다 당신이 장치를 사용한다면

일단 설치되면 해당 응용 프로그램을 닫을 수 있습니다 내가하는 일의 용도가 무엇인지 말해 줄께 이 모든 게 여기에 있습니다 자, 내 응용 프로그램이 설치되어 있습니다 신청서를 닫습니다

그리고 내 캐시에서 응용 프로그램을 닫습니다 자, 내 응용 프로그램이 실행되고 있지 않습니다 주 메모리에 없습니다 여기 내 요점은 WhatsApp 애플리케이션을 보는 것입니다 또는 Facebook 응용 프로그램 또는 Twitter 응용 프로그램

그들은 심지어 백그라운드에서 실행되지 않습니다 그들은 닫혔다 그러나 누군가가 너에게 통지를 보내면, 당신은 여전히 ​​통보를받을 수 있습니다 방법? 음, 방송 수신기 항상 특정 메시지를 듣고 있습니다 그래서 그것이 내 요점이다

이 특정 예에서 내부에 하나의 응용 프로그램이 있음을 확인하십시오 방송 수신기가 있습니다 그리고 그 메시지를 듣고 있습니다 그래서 그 방송 수신기는 호출 될 것입니다 이제 또 다른 응용 프로그램이 있습니다

누가 그 똑같은 방송을 듣고 있니? 수신기 또는 동일한 메시지 이제, 그 방송 수신기는 또한 둘 다 듣기 때문에 호출된다 동일한 메시지 먼저 이것을 시도해 봅시다 이것을 클릭하십시오

만나다? 두 번째 수신자 호출과 첫 번째 수신자 호출 좋았지? 이것이 방송을 실제로 처리 할 수있는 방법입니다 수신기가 내장되어 있거나 맞춤 수신기라고 부르는 것 네 물론이 버튼이 필요 없습니다

따라서이 버튼을 제거하려면, 여기에서이 단추를 제거 할 수도 있습니다 네,이 버튼을 제거 할 수 있습니다 그리고 지금은이 방법조차 필요하지 않습니다 됐어 큰

그래서 그것은 방송 수신기의 작은 데모였습니다 귀하의 GitBook에 실린 실습을 시도하십시오 고맙습니다 [음악 재생]

Android Kotlin Development Masterclass using Android Oreo on Udemy – Official

Android Oreo Kotlin에 오신 것을 환영합니다 masterclass

Kotlin을 사용하는 Android 용 앱 언어 그래서 제 이름은 팀 부칼 카입니다 나는이 코스의 강사이다 내 공동 강사 장 폴 로버츠와 지금 나는 전문 소프트웨어를 해왔다 30 세가 넘은 개발 교사 몇 년 동안 나는 약 200,000 내 다양한 ​​온라인 학생 프로그래밍 과정

너도 알지 중요한 것은 프로그래밍은 열정이 있다고 가르쳐줍니다 그렇게하는 것에 대해, 그리고 그들이 전문 프로그래밍 경험 그들이 이해한다면 업계 최고의 교육을위한 비판적 필요성 연습을하고 또한 기술을 습득했습니다 복잡한 주제를 설명하기 위해 정말 이해하기 쉽다 너 가고있어

이 과정에서 그 이상을 얻으려면 이제이 과정은 원하는 사람을위한 것입니다 Kotlin을 사용하여 Android 앱을 만들 수 있습니다 이제 코스는 실제로 내 가장 많이 팔린 Android 코스 Java를 사용하지만 다시 작성되었습니다 Kotlin과 그것은 거대한 코스이고 결국 약 50 시간의 길이가된다

내 자바와 같은 크기로 맞추기 이 과정의 버전과 실제로 당신이 도구에서 모든 것을 다룹니다 Android에서 프로그래밍하거나 프로브해야합니다 Android 앱을 바로 프로그래밍하는 방법 자신 만의 것을 만드는 것까지 그래서 나는 정말로 당신을 여행하게 할거야 Android 앱 개발 이해 한 번에 한 프로그램 씩 Kotlin을 사용합니다

이제 모든 것이 실제로 설명됩니다 세부 사항은 코 틀린조차있다 튜토리얼 섹션을 사용하지 않은 경우 전에 코 틀린 도전 과제는 다음과 같습니다 더 나아갈 방향 기술 이해 및 테스트 내가 코스를 지킬뿐만 아니라 업데이트되었지만 이 과정의 내용에 대한 답변 신속하게

그래서 결국 물론 당신은 확실한 이해를 가질 것입니다 Kotlin을 사용하는 Android 앱 개발 Android에 신청할 준비가됩니다 앱 개발 프로그래밍 위치 또는 프리랜서 직무를 맡아 라 그래서 이상 이 과정의 학생은 Android를 만드는 방법을 배우고 싶어합니다 앱

따라서 이전에 프로그래밍 언어가 필요합니다 이제 다른 요구 사항은 없습니다 이 과정을 수강하는 것 이외에는 컴퓨터에 대한 액세스 및 당신의 첫 번째 얻으려고 또는 더 나은 프로그래밍 작업 또는 소프트웨어 개발자로서의 프리랜서 이 과정은 확실히 당신을 도울 것입니다 지금 당장 코스를 들러보세요 이 페이지에 대한 설명 및 리뷰 자세한 내용을 보거나 미리보기를 할 수도 있습니다

이 페이지의 일부 내용도 마찬가지입니다 나는 당신을 안으로 볼 것을 고대합니다

Sample Course Training – Android Kotlin Development Masterclass on Udemy – Official

알았어 나는 그 도전을 풀어 줘

마지막 순간에 오른쪽으로 주었다 우리가 필요로하는 것부터 시작하는 비디오 할 일은 새로운 것의 왼쪽 가장자리를 제한하는 것입니다 숫자 나는 당신을 클릭 할 것입니다 새 번호로 문자를 보낼 때 알아 그 왼쪽 가장자리를 레이아웃의 왼쪽 가장자리와 오른쪽 가장자리에서 오른쪽 가장자리까지 레이아웃을 사용하여 두 비행기에서 크기를 조정해야합니다

이미 10 일에 복제본으로 설정해야합니다 이 경우입니다하지만 귀하의 개정은 당신이 그들을 변경하고 세 가지를 확실히 설정하고 싶다 상인들은 모두 8 명으로 설정되어 있습니다 그들은 우리가 볼 수있는 것처럼 여기에 설정되어 있습니다

검사관이 마침내 수평 슬라이더를 50으로 설정하십시오 그것은 내 사건에서 이미 다시는 아니지만 작업 텍스트 뷰가 설정되어야합니다 또한 스크롤 내용으로 감싸기 위해 설정됩니다 텍스트보기를 클릭하겠습니다 너는 그것들이 사과를 위해 설정되어 있음을 볼 수있다

핵심 콘텐츠 및 슬라이더가 있어야합니다 50으로 설정하고 왼쪽과 오른쪽으로 오른쪽 여백은 같은 값으로 설정됩니다 지금 우리는 8을 사용하고 있지만 16은 될 것입니다 그것이 단지이기 때문에 지금도 좋아 어느 한 문자를 표시 조금 길어 보일지 모르지만 나는 오른쪽에있는 속성은 텍스트 크기를 18보다 큰 크기로 설정하십시오

SP 및 대담한 버튼을 설정하기 만하면됩니다 아래에 내가 여기 와서 너는 할 수있어 굵은 글씨를 클릭하고 이것을 나로 변경하십시오 18 SP에 언급 그것은 지금 거기에있어 우리는 그 순간 많은 변화를 볼 수 없다 하지만 편집 텍스트 위젯 모두 또한이 텍스트의 18 SP의 텍스트 크기를 사용하십시오 보기가 이제 그 크기에서 더 좋아 보일 것입니다

그것은 꽤 좋아 보이지만 전에는 잊지도 우리와 함께 싱글 허용 음수와 같은 십진수 4 점 5 6 7 지금 편집 우리가 사용했던 텍스트 위젯은 sign을 허용한다 숫자가 아니라 십진수가 아니므로 우리는 내가 그렇게 변화 할 때 에서 결과 위젯을 선택하십시오 여기 오른쪽 입력은 입력 유형입니다 그리고 당신은 그것이 숫자면으로 설정되어 있음을 볼 수 있습니다 이제 우리는 숫자가되기를 원해

십진수 그래서 이걸 클릭 할거야 여기에 줄임표 단추가 있습니다 팝업 메뉴가 뜨면 우리는 KITT를 할 수 있습니다 우리가 내려와서 원하는 옵션 여기에서 십진수를 선택하여 확인란을 선택하고 확인을 클릭합니다 이 두 가지 옵션이 거기에 아무 말도하지 말고 그곳에는 파이프가있다

내가 원하는 숫자 십진수보다 문자 새로운 숫자에 대해 같은 못을하는 것 여기를 클릭하면 줄임표로 소수점 이하 자릿수를 추가하거나 확인하십시오 소수점도 포함되어 있으므로 이제 설정됩니다 두 값 모두에, 그리고 그렇게하지 않으면 버튼 도트를 사용할 수 없습니다 소수점을 입력하십시오 숫자가 하나의 마지막 변경 사항이 있습니다

결과와 텍스트를 만들고 싶다 이제 위젯을 선택합니다 이 소프트 버튼 클릭 앱 실행 키보드가 자동으로 화면에서 편집을 입력하십시오 텍스트 위젯 이제 우리는 어떤 용도로 사용되는지 알고 있습니다 결과 위젯에 입력 할 수 있음 결과를 표시하기위한 것입니다

지금 계산하는 방법의 그 행동이 집중 가능한 속성 그래서 내가 실제로 속성 목록에서를 펼치십시오 아래로 스크롤 여기에서 우리는 초점을 맞출 수 있습니다 터치 모드에서 초점을 두 가지 속성은 모바일 장치 다른 입력 방법을 사용할 수 있습니다 예를 들어 휴대 전화 만 사용할 수 있습니다 터치 모드와 태블릿에서 작동합니다

연결된 실제 키보드가있다 터치 모드가 아닌 경우 실제로 가장 현대적인 Android 휴대 전화 USB 온더 고 (on-the-go) 또는 USB OTG를 지원하여 외장 키보드를 연결할 수 있습니다 및 / 또는 마우스를 사용하면 그들은 실제로 더 이상 연락 할 수 없습니다 모드와 장치가있을 때 터치 모드 위젯은 포커스가 가능하지 않지만 위젯에 대한 예외가 있습니다 텍스트 입력 용으로 설계되었습니다

우리가 필요로하는 텍스트를 편집하십시오 이 두 속성을 false로 설정하십시오 소프트 키보드가 나타나지 않도록 방지 그들이 시도를 사용할 때 위젯이나 외부 마우스로 클릭하기 때문에 나는 여기에 초점을 맞추기 위해 여기에 올 것이다 볼 수있는 드롭 다운을 선택하십시오 그 초점과 실제로 될 것입니다 우리는 진정한 자동을 보여줄뿐입니다

이 경우 실제로는 false를 입력하십시오 false에 입력 한 다음 Enter 키를 누릅니다 그러나 다른 한편으로는 접촉 할 수있는 초점 모드로 클릭하면 나는 단지 조금 더 확장하려고합니다 더 많이 그래서 우리는 그것을 조금 볼 수있다 더 잘 알다시피 나는 터치 모드에있다

내가 실제로 클릭하는 것을 볼 수 있습니다 여기서는 tri-state 체크 박스를 사용하고 있습니다 대시 (dash)의 세 가지 상태 중 하나로 설정할 수 있습니다 기본값으로 설정되어 있음을 의미합니다 이제 진드기가 진실하다는 것을 의미합니다

비어 있으면 허위지만 불행히도 여기에서 볼 수 있듯이 성적으로 성관계에서 작동하지 않습니다 굉장한 실제로 Android Studio 이후 23과 내가 언급 한 방식으로 지금까지 버그는 있지만 당신을 두지 마라 Android Studio에서 레이아웃 디자인은 단지 편리합니다 로드 할 때 입력 할 필요가없는 이 과정의 첫 번째 버전 XML 몇 년 전 그것이 우리가 만든 방법입니다

XML을 입력하여 레이아웃을 일은 분명히 먼 길을왔다 분명히 시간이 지남에 따라 우리의 경우에는 더 좋지만 지금은 무엇을 할 수 있습니까? 이 버그 또는 작업자에 대해 해결 방법은 도구를 올바르게 사용하는 것입니다 대신 지금 당신은 그 사실을 알아 채 셨을 것입니다 이러한 속성 중 일부가 나타나는 것 같습니다 하나의 스패너가있는 버전으로 두 번 또는 옆에있는 미국인의 렌치 한 가지 예가 우리는 내가 붕괴 된 것을 볼 수 있습니다

우리는 텍스트를 가지고 있으므로 스패너 나 렌치로 이걸 가지고있어 하지만 그것들은 같은 이름입니다 공구 속성이며 적용 만 레이아웃 디자이너 내부에서 이것들을 렌치 또는 스패너가 없다 앱을 실행할 때 효과가 있습니다 내가 할 수있는 텍스트에서 무엇을 의미하는지 보여 준다

음력 8 7 6 3 점 5 점을 볼 수 있습니다 그 내용은 실제 결과에서 텍스트 자체 편집 텍스트 내가 실제로 그들을 다시 지우고 오면 여기에있는 텍스트로 스패너 또는 렌치를 선택하고 Enter 키를 누릅니다 여전히 차이는 있지만 여기에 차이가 있습니다 두 번째 전화 번호가 이 두 번째 입력란에는 렌치가 스패너를 앱을 실행할 때 나타납니다 기본적으로 당신을 돕기 위해 시각적으로 잘 표시되므로 실제로 읽는 터치 모드에서 집중 가능 우리가 여기 올 수있는 확장 목록 우리는 실제로이 작은 것을 클릭 할 수 있습니다

스패너를 오른쪽으로하면 너 내가 그 일을 언제 끝났는 지 알 수 있어요 다른 하나를 열었지만 지금은 아래에있다 이 사람은 같은 고통을 겪지 않는다 벌레와 우리가 여기 올 수있어 이것을 클릭하면 작동하는 것을 볼 수 있습니다

지금 체크 박스가 있고 우리는 그것을 거짓으로 만들기 위해 그것을 끄고 싶다 이 사람은 당신이 볼 수있는 것처럼 고통을 겪지 않습니다 같은 버그에서 우리는 할 수있어 티켓과 분명히 있기 때문에 그것은 렌치 또는 스패너 버전이 아닙니다 우리가 달릴 때 어떤 효과가있을거야

응용 프로그램하지만 우리가 할 수있는 일은 여기에 있습니다 볼 수있는 텍스트 탭을 클릭하십시오 연락이 가능한 콜론 도구가 있습니다 내 자신이 거짓과 같아서 나는 바뀔 수있다 그건 안드로이드에 그렇게 다른 말로 와서 여기까지 와서 안드로이드로 바꾼다

여기에 와서 그것을 설정할거야 사실 일 뿐이 었어 다른 기회를 잡을거야 이제 텍스트를 삭제하십시오 우리는 더 이상 필요하지 않기 때문에 모두 지금 당장 우리가 해냈습니다

우리는 우리가 볼 수있는 디자인으로 돌아온다 이제 포커스가있는 체크 박스가 나타납니다 터치 모드가 아닌 첫 번째 터치 모드 하나의 도구 나는 지금 그것을 실제로 다시 똑딱 거리고 이펙트를 끄고 실제로 만들어라 거짓이 그렇게 일하는 빠른 방법입니다 이 특정 버그와 우리가 세 번째로 클릭하면 다시 돌진하고 너는되지 않을 것이다

그것없이 다시 되돌릴 수있다 다시 buuuut 도구를 사용하여 나는 그것을 클릭 할 것입니다 그것은 작동하지 않지만 그때 나는 할 수 없어 똑같은 일이 다시 일어나서 그것의 도구 버전을 다시 디자인으로 텍스트로 바꾸고 도구를 안드로이드로하고 거짓으로 남겨두기 때문에 그게 궁극적으로 우리가 원하는 것입니다 그게 지금 작동하고있어

그러면 내가 할 수있어 이리로 와서 이 시점에서 도구 버전을 사용할 수 있습니다 이제 우리는 집중력과 결과에 대한 터치 모드에서 초점 가능 텍스트를 편집 할 수 있습니다 텍스트 위젯의 새 번호 소프트 키보드 사용 가능 그것으로 원하는 결정의 일종이다 사용자를 만들 때해야합니다 인터페이스는 다른 말로하면 만들지 않습니다

숫자의 입력을 제한하는 감각 우리 버튼에 대해서만 가능합니다 그 대답은 누군가가 외장형 키보드는 아마도 그들이 가진다면 가서 화가났다 화면을 터치하여 집중력이 뛰어난 계산기가 항상 있어야합니다 이 위젯에 대해 확실히 설정해야합니다 새로운 번호 또한 숫자를 허용하기로 결정했습니다

소프트 키보드를 사용하여 입력해야합니다 사용자가 백 스페이스 키를 사용하여 그들이 입력 오류를 해결하기 위해 증명 나도 떠나고 싶어 집중 가능 터치 모드에서 변경없이 초점을 맞 춥니 다 이 위젯의 ​​경우 그리고 원하지 않는 경우 온 스크린 키보드 사용 허용 당신은 그것을 지금 무능하게하는 방법을 알고있다 버튼을 일렬로 정렬하면됩니다

우리가해야 할 일은 삭제하는 것입니다 그런 다음 버튼 7의 왼쪽 구속 조건 새 번호의 왼쪽 가장자리로 설정하십시오 대신 나는 여기에 올거야 7 번에 대해이 제약 조건이 있습니다 우리 자리 7 그리고 그냥 우리의 정상 모드에서 우리는 우리가 왼쪽 구속 조건을 얻었습니다

레이어의 왼쪽 왼쪽 화면이므로 그걸 지우려고하고 그 다음엔 우리는 왼쪽 구속 조건을 설정하기를 원한다 새 번호의 왼쪽 가장자리가된다 대신에 그 일을 진행하겠습니다 그렇게 우리가하고 싶은 또 다른 일은 여백을 변경해야합니다 버튼 7의 왼쪽 여백을 0으로 설정합니다

나는 그 일을 계속할 것입니다 그렇지 않으면 약간의 일이 될 것입니다 당신은 그것이 맞는 것을 알 수 있습니다 이 특별한 이유로 지금은 꽤 멋지다 레이아웃은 우리가해야 할 모든 것입니다

버튼 배열을 실제로 중심에 두지 않았습니다 그러나 자산은 중앙에 있고 너비가 같다 이제 스위치를 켜면 모두 작동합니다 그것이 여전히 보일 것 인 풍경에 대한 배치 앞으로 잘 외국 외국으로 그것은 아니에요 수직으로 좋지만 우리는 다시 올 것이다

그저 우리를 갖는 것보다 이 모양을보기 위해 좋아, 여기 와서 그들이 그것을 볼 수있는 풍경 여전히 괜찮아 보이는군요 수평으로 나는 공정한 괜찮아 언급했다 – 그렇게 좋지 않은 수직 I 실제로 저에게 돌아올 것입니다 완전히 다시 초상화로 돌아 간다 버튼 배열을 다음과 같이 가운데에 정렬하지 않았습니다

우리가 가지고 있기 때문에 나는 거기에서 말했어 4 개의 버튼이 잘 작동하지만 if 우리는 더 많은 버튼 열을 추가했습니다 더 이상 중심에 있지 않을 것이다 나는 그 곳으로 돌아올거야 이 섹션의 끝 부분에서 위젯의 센터 그룹은 지금도 내가 원했던 것이 한 가지 더있다

우리가 쓰기 전에 계속 토론하십시오 지금 계산기의 코드 이전 동영상에서 텍스트를 삭제합니다 코드로 텍스트보기를 쉽게 할 수 있습니다 당신은 보았고 종종 좋은 생각입니다 레이아웃에 텍스트를 남겨 둡니다

수술 중 텍스트를 삭제하겠습니다 그것의 수직을 바꾸려고 노력하십시오 제약 조건에 맞춰서 기준선은 약간 보입니다 그곳의 꼭대기에서 선이 더 높을 때 나는 우리 본문으로 여기 올 것이다 이것이 우리의 운영을위한 것임을 보아라

위젯 우리는 텍스트를 삭제하려고합니다 나는 언급했다 그리고 당신은 그것이 나 거기에 Enter를 누르고 같은 것을 누르십시오 내가 다시 클릭하면 디자인 또는 청사진의 디자인 위젯이 줄어들고 그 이유는 밑줄로 묶인 내용으로 사실 나는 어떤 내용도 없으므로 나는 카테고리 삭제로 시작하려고합니다 수직 구속 조건을 볼 수 있습니다

에서 검사관이 사라졌습니다 권리와 나는 그것을 삭제할 수 있었다 거기 에서뿐만 아니라 사실 지금은 위젯이 너무 작습니다 사용하기가 더 쉬울 것입니다 검사자는 제약 조건을 삭제하지만 우리가 모르겠다

시도하기가 꽤 어려울 수도 있습니다 그리고 거기로 가면 만지면 돼 거기의 기준선 버튼 과정은 지금 나에게 나타난다 위젯의 크기를 조정하거나 텍스트를 넣을 수 있습니다 일시적으로 충분히 넓게 만들어라

나는 XML을 편집 할 수있는 곳이있다 그것이 반드시 필요한 것은 아니지만 다른 방법 텍스트를 넣는 것보다 쉽다 일시적이지만 알아두면 유용합니다 그것에 대해 이제 제약 조건이 속성을 확장 할 수 있습니다 이중 화살표를 사용하여 특성을 나타냅니다

과정에서 사용 해왔다 그럼 내가 확장 할 수있어 제약 조건을 확장 할 수있는 목록의 맨 위로 여기에서 볼 수 있듯이 그 목록이 알파벳순이지만 맨 위에 섞기 위해 사용되었습니다 목록을 만들면 도움이 될 것입니다 조금 더 넓어서 우리가 볼 수있다

이들 모두의 이름은 기본적으로 각 제약의 전체 이름 내가 호위 할 기준선을 원해 이 기준선을 기준선으로 여기에서 지금 기준선 기준선에서 지금 기준선으로 가자 이름은 매우 서술 적이므로 우리는 우리가 겪은 제약을 볼 수 있습니다 이미 설정되어 있으므로 왼쪽 시작이 설정됩니다 여기 레이아웃의 왼쪽에 시작 단계 2 부모 오른쪽 끝에 새로운 것의 왼쪽에 제약이 있었다

번호는 여기에서 볼 수 있습니다 우리가 원하는 빛을 원한다 기준선에 대한 텍스트 뷰의 기준선 새 번호를 입력하면됩니다 알 수있는 ID ID 및 새로운 번호 as – 기준선을 제한하는 위젯 – 그리고 더 쉽게 당신은 단지 새로운 것을 선택합니다 목록의 번호가 여기에 오니 새 번호를 선택하면 볼 수 있습니다 즉시 정렬 곧바로 차고 우리는 그것을 보았다

화면에 그려져있어 새로운 위젯이 도중에 컴포넌트 트리의 맨 아래 그래서 여기서 다시 돌아올거야 더 많은 공간을 만들어라 그래서 그들을 끌어 올릴거야 목록에 일치하는 순서로 표시됩니다 레이아웃의 배치가 정말로 결과 작업이 될 것이고 당신이 될 것입니다

번호는 너무 좋아 풍경은 이제 약간의 모습을 보입니다 당신은 단추가 너무 멀리다는 것을 볼 수있다 화면 하단 사이에는 약간의 공간이 있습니다 위젯을 수직으로 배치하여 시작할 수 있습니다 그들의 상단을 줄임으로써 그들을 뒤섞다

이제 마진은 때때로해야 할 수도 있습니다 하지만 안드로이드는 다른 것을 가지고있다 솔루션을 만들고 서로 다른 화면을위한 별도의 레이아웃 크기 및 가로 수를 세로와 다른 모든 화면 크기 맞아, 지금 비디오를 끝내자 우리가이 버튼들을 다음 동영상에서 너무 가까이 있습니다 그 문제를 해결하기 위해 약간의 시간을 보내라

그래서 이것들이 옳은 것처럼 보입니다 초상화와 풍경 모두에서 인터페이스 모드이므로 다음 동영상에서 보자

How to Camera2 (Android Development Patterns S2 Ep 8)

고양이 팬케이크

팬케이크를 먹는 고양이 만약 어플에 좋은 카메라가 지원되지 않는다면 어떻게 이런 컨텐츠들을 포착할까요? 제 이름은 데이비드 이스트고, Camera2 API는 가장 뛰어난 카메라 어플을 만드는데 필요합니다 잠시 물러서서 안드로이드 카메라API 옵션의 역사를 살펴보겠습니다 사진이나 영상을 찍는 가장 단순한 옵션은 항상 카메라 인텐트였습니다 기본적으로, 귀하가 인텐트를 시작하면 사용자들은 사진을 찍기 위해 자신이 원하는 카메라 어플을 사용하죠

이 것은 이용하기 쉽지만, 사실 실력이 있는 카메라 어플에게는 그렇지 않습니다 카메라 인텐트는 주로 카메라가 주요 기능이 아니라 부가적인 어플에 사용됩니다 카메라 인텐트로는 북실북실한 고양이가 팬케이크 먹는 모습을 못찍죠 그래서 더 나은 API가 필요했습니다 카메라 API는 카메라 인텐트보다 더 많은 것을 조정할 수 있었습니다

카메라 API가 있다면, 원하는데로 카메라 뷰를 설정할 수 있었습니다, 정말 좋았죠 하지만 사진이 발전하면서 부족한 부분들이 발견됐죠, 예를 들어 압축되지 않은 이미지를 포착할 때, 혹은 프리뷰 속도가 초당 1에서 3 프레임인 새로운 하드웨어에서의 실행 등등에 있어서 문제가 있었습니다 고양이를 찍으려면 더 나은 API가 필요하죠 그래서 Camera2를 소개합니다 Camera2 API는 가장 최근에 나온 카메라API로, 가장 크고 가장 뛰어납니다

Camera2 API는 해당 디바이스 카메라의 모든 권한을 귀하에게 부여합니다 그리고 전 API의 모든 문제들도 해결됐죠 더 빠른 간격으로 사진을 찍을 수 있고, 다수의 카메라에서 프리뷰를 볼 수 있으며, 필터효과도 바로 적용할 수 있습니다 하지만, 새롭게 만든 카메라 어플에 적용하기 전에 알아야 할 것들이 있습니다 Camera2 API는 좋은 기능들을 가지고 있지만, 어플 사용자의 디바이스가 지원하지 못 할 수 있습니다

그렇기 때문에, 귀하는 어떤 디바이스가 지원 가능한지 아셔야 합니다 이 정보는 디바이스의 카메라 스펙을 살펴보면 알 수 있습니다 이 스펙은 렌즈의 방향같은 간단한 특징일 수도 있고, 얼굴 인식 모드의 여부처럼 복잡한 것일 수도 있습니다 만약 귀하의 어플이 특정 스펙 없이는 지원이 안된다면, 사용자가 어플을 다운받으려면 해당 스펙이 필요함을 명시하면 됩니다 매니페스트 파일에 사용자의 기능을 설정해놓으면 되죠

한 가지 더 중요한 것은, Camera 2API는 안드로이드 L에서 내놨기 때문에, 모든 어플을 지원하기 위해서는 다시 카메라API를 사용해야 합니다 그리고 Camera2 API는 안드로이드 서포트 라이브러리에서 지원이 아직 안되지만, 이 남성분에게 재촉하면 더 빨리 가능케 할 수 있어요 Camera2 API는 디바이스의 카메라에 대한 귀하의 책임을 증가시킵니다 그리고 더 큰 책임에는 큰 힘이 따라오죠 아마 그럴꺼에요

Camera2 API에 대해서 더 아시려면 API 레퍼런스를 살펴보세요 그리고 실제로 시행된 모델을 확인하고 싶으시면, GitHub에 원시 이미지를 포착하는 샘플 어플이 있습니다 귀하의 어플이 카메라를 사용한다면, Camera2를 사용해 가장 뛰어난 카메라를 제공하세요 계속 좋은 어플을 개발해주세요

Kotlin for Android O Development: From Beginner to Advanced | Course Preview

안녕하십니까, 코르시카에 입사하신 것을 축하드립니다 안녕하세요, 저는 조 피어스입니다

저는 조 피어스 아카데미의 설립자이자 창업자입니다 전 세계의 다른 분야에서 30 만 명이 넘는 학생들을 공부합니다 이제 Kotlen 어학 코스를 통해 추가 선생님 인 Attil과 함께 배우게됩니다 Java Developer 및 CutLine은 놀라운 응용 프로그램을 만드는 데 도움이되는 소프트웨어 작업에 수천 시간 이상을 투자했습니다 이 과정의 이점은 절대적으로 끝이 없습니다! 실제 세계로 번역 할 수있는 기술을 배우게 될 것이며 처음부터 전문적인 프로그램을 만드는 방법을 배울 것입니다

이러한 기술을 활용하여 수백 가지의 응용 프로그램을 만들 수 있습니다 천국이 한계 다! 우리는 당신과 함께하는 것을 매우 자랑스럽게 생각합니다 이제 나는 여분의 시간을 낭비하고 싶지 않습니다, Atel은 당신에게 코스의 다음 비디오에서 모든 것을 가르쳐 줄 것입니다 그리고 나서 시작합니다 우리는 배우는 가장 좋은 방법은 후속 조치와 실제 적용을 통한 학습이라는 것을 믿습니다

우리는 당신이 당신이 안드로이드 애플 리케이션을 만들 수있는 경험에 손을 댈 수있는 몇 가지 다른 예를 보여줄 것입니다 새로운 프로그래밍 언어 : Kotlin, 다시 한 번 감사드립니다 나는 곧 당신을 보려고 기다립니다!

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

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

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