Google Open Source it's Google I/O 2019 Android App
Google I/O Android App
Google I/O is a developer conference held each year with three days of deep technical content featuring technical sessions and hundreds of demonstrations from developers showcasing their technologies.
This project is the Android app for the conference.
For a simpler fork of the app, check out the Android Dev Summit App in the adssched branch. In this variant some features are removed, such as reservations and the map screen, and new features are added: notifications, Instant App support and more modern dependencies.
Features
The app displays a list of conference events - sessions, office hours, app reviews, codelabs, etc. - and allows the user to filter these events by event types and by topics (Android, Firebase, etc.). Users can see details about events, and they can star events that interest them. Conference attendees can reserve events to guarantee a seat.
Other features include a Map of the venue, informational pages to guide attendees during the conference in Info, and time-relevant information during the conference in Home.
Development Environment
The app is written entirely in Kotlin and uses the Gradle build system.
To build the app, use the
gradlew build
command or use "Import Project" in Android Studio. A canary or stable version >= 3.4 of Android Studio is required and may be downloaded here.Architecture
The 2019 version of the app is built on top of the last year's app. The architecture is built around Android Architecture Components.
We followed the recommendations laid out in the Guide to App Architecture when deciding on the architecture for the app. We kept logic away from Activities and Fragments and moved it to ViewModels. We observed data using LiveData and used the Data Binding Library to bind UI components in layouts to the app's data sources.
We used a Repository layer for handling data operations. IOSched's data comes from a few different sources - user data is stored in Cloud Firestore (either remotely or in a local cache for offline use), user preferences and settings are stored in SharedPreferences, conference data is stored remotely and is fetched and stored in memory for the app to use, etc. - and the repository modules are responsible for handling all data operations and abstracting the data sources from the rest of the app (we liked using Firestore, but if we wanted to swap it out for a different data source in the future, our architecture allows us to do so in a clean way).
We implemented a lightweight domain layer, which sits between the data layer and the presentation layer, and handles discrete pieces of business logic off the UI thread. See the
.\*UseCase.kt
files under shared/domain
for examples.
We used Navigation component to simplify into a single Activity app.
We used Dagger2 for dependency injection and we heavily relied on dagger-android to abstract away boiler-plate code.
Firebase
The app makes considerable use of the following Firebase components:
- Cloud Firestore is our source for all user data (events starred or reserved by a user). Firestore gave us automatic sync and also seamlessly managed offline functionality for us.
- Firebase Cloud Functions allowed us to run backend code. The reservations feature heavily depended on Cloud Functions working in conjuction with Firestore.
- Firebase Cloud Messaging let us inform the app about changes to conference data on our server.
- Remote Config helped us manage in-app constants.
Kotlin
We made an early decision to rewrite the app from scratch to bring it in line with our thinking about modern Android architecture. Using Kotlin for the rewrite was an easy choice: we liked Kotlin's expressive, concise, and powerful syntax; we found that Kotlin's support for safety features for nullability and immutability made our code more resilient; and we leveraged the enhanced functionality provided by Android Ktx extensions.
Copyright
Copyright 2014 Google Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Hanya menggunakan 1 akun id yang anda daftar sudah dapat menikmati semua permainain yang kami miliki. Yang sangat amat lengkap seperti : Poker, Ceme, Domino QQ, BlackJack, Sakong, capsa susun, Bandar ceme kelilinig, Omaha, Super10 dan Superbull
ReplyDeletehttps://robo02.ru/forums/users/onlinesspokerku/
terima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, daftar sbobet solusinya situs judi bola terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar
ReplyDeleteterima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, agen sbobet bola solusinya situs judi terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar
ReplyDeleteAgen Joker123 Terbaru, selalu memperbaharui jenis permainannya demi kenyamanan pengunjung
ReplyDeletetemuka situs-situs judi online terbaik'mu.
ReplyDeleteSITUS SBOBET
terima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, judi bola sbobet solusinya situs judi terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar
ReplyDeleteterima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, judi togel terpercaya solusinya situs judi terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar
ReplyDeleteSaya sangat berterima kasih berkat artikel agen judi bola resmi ini saya menjadi lebih mengetahui serba serbi judi bola online dan mendapatkan banyak sekali kemenangan besar.
ReplyDelete
ReplyDeleteterima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila ada yang ingin bermain game SLOT bisa mengunjungi judi online slot karena berapapun kemenangan anda pasti akan dibayar
bagi parah pecinta judi slot online, berikut adalah situs
ReplyDeleteSLOT JOKER TERBAIK
dan terpercaya saat ini
agen poker online terbaik dengan sistem idn poker situs idn poker yang paling dicari oleh para pencinta judi idn poker terbaik
ReplyDeleteberkat
ReplyDeleteCARA MAIN IDN POKER ONLINE
ini membuat saya makin banyak mengetahui situs judi online lainya..
ReplyDeleteterima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, link sbobet solusinya situs judi terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar
terima kasih situs ini sudah memberikan pengetahuan yang bagus dan apabila Cari permainan yang seru dan bisa dimainkan ? Permainan yang tidak pernah bisa bosan dan juga bisa menghasilkan uang asli untuk kalian, sink alternatif login joker123 solusinya situs judi joker123 terbaik,terlengkap di indonesia berepa kemenangan anda pasti akan di bayar.
beberapa link login sbobet asli terpercaya dengan permainan online yang membuat anda senang
ReplyDeleteThis is my first time i visit here and I found so many interesting stuff in your blog especially it's discussion, thank you. anti captcha key
ReplyDelete