Droidcon London. Bagaimana itu?



Suatu hari di London, konferensi droidcon diadakan. Topik modis seperti Redux, MVI, optimalisasi kecepatan bangun dan kemampuan Gradle tidak terlewati. Acara dibuka oleh laporan oleh Chet Haase dan Romain Guy tentang fragmentasi memori dan perbedaan antara versi Android Kolektor Sampah, dan Jake Wharton membuat presentasi tentang Dagger.

Dalam ulasan ini, saya ingin membagikan kesan saya tentang konferensi dan rincian laporan ini.

Saya mendengar banyak tentang droidcon London, tetapi sejauh ini saya belum dapat mengunjunginya, karena harganya jauh lebih mahal daripada, misalnya, droidcon Berlin, belum lagi konferensi Moskow. Pada saat yang sama, tingkat konferensi Rusia, seperti droidcon, Mobius, AppsConf, telah tumbuh secara signifikan dalam beberapa tahun terakhir, dan saya ingin membandingkan suasana, tingkat organisasi dan laporan dengan mitra asing.

Tetapi hal pertama yang pertama.


Tiket


Jika Anda membeli tiket di muka, maka Anda dapat mengambilnya seharga £ 230 + PPN. Harga akhirnya sekitar 700 pound, termasuk PPN. Ini cukup mahal jika dibandingkan dengan tiket ke konferensi Rusia, tetapi rata-rata harganya cukup untuk Eropa. Sebuah penerbangan akan menelan biaya sekitar 30 ribu rubel, tetapi ada peluang untuk menghemat uang, karena Victory terbang di sana, dan Anda dapat membeli tiket sekitar 6.000 rubel sekali jalan.


Akomodasi


Kami tinggal berjalan kaki 15 menit dari venue. Hotel ini rata-rata, sekitar 150 pound sehari. Bahkan, jika Anda tidak terlalu menuntut, maka Anda bisa tinggal di beberapa hostel di pusat kota seharga 20 pound sehari.




Organisasi

Dalam hal organisasi, konferensi berada pada tingkat yang cukup tinggi. Saya menyukai situs itu sendiri: aula yang luas untuk komunikasi dan relaksasi moral, audiensi yang nyaman di mana laporan dibaca. Di aula ada banyak stan dari berbagai perusahaan tempat Anda bisa mengambil pena dan kaus. Pada malam hari pertama, panitia mengadakan pesta. Ada minuman dan musik gratis, tetapi kami berjalan-jalan di London.






Laporan

Menurut saya, jadwal itu disusun dengan sangat baik, karena setiap saat ada laporan yang menarik. Selain itu, lokakarya terus diadakan.


Tetapi dari tingkat laporan saya berharap lebih. Banyak dari mereka tanpa komponen praktis, misalnya, hanya deskripsi beberapa API atau fungsionalitas. Tingkat laporan di konferensi Moskow setidaknya tidak lebih rendah. Ada beberapa pertunjukan yang cukup kuat dan relevan. Selanjutnya, saya akan menulis tentang hal-hal yang menurut saya paling menarik.


Lebih lanjut tentang laporan

Keynote - Pembicaraan Sampah: Evolusi Pengumpulan Sampah di Android
Chet Haase dan Romain Guy, Google
Konferensi dimulai dengan laporan yang sangat bagus tentang model memori di Android. Orang-orang mengatakan bagaimana itu berubah dari versi ke versi, untuk alasan apa ini terjadi. Saya tidak akan mengungkapkan detailnya di sini, tetapi saya sarankan untuk menonton videonya .

Modularisasi - Seberapa Keras Itu Bisa?
Elin Nilsson, Spotify
Tidak terlalu teknis, tetapi lebih memotivasi, tetapi dari laporan ini tidak kalah menarik. Elin berbicara tentang alasan yang membuat mereka berpikir tentang membagi aplikasi monolitik ke dalam modul, betapa sulitnya dan apa yang terjadi dalam hal jumlah kode, proses, dan kecepatan membangun. Tautan ke laporan .



Redux di Android
Nish Tahir, WillowTree
Saya tidak bisa mengatakan bahwa laporan ini entah bagaimana membuka mata saya untuk Redux, tetapi, menurut pendapat saya, penulis dengan baik mengungkapkan esensi dari keputusan ini, berbicara tentang masalah dan apakah layak memilih Redux sebagai pola arsitektur utama dan dalam kasus mana itu dibenarkan. Laporkan Tautan



Pengikatan data modern
Yigit Boyar dan Jose Alcerreca, Google
Sangat menarik untuk mendengarkan laporan tentang alat dari Google dari mulut para pengembang itu sendiri. Pada prinsipnya, mereka tidak mengatakan sesuatu yang baru, keinginan untuk menggunakan Data Binding juga tidak muncul, tetapi terima kasih atas usahanya. Laporkan Tautan

Selami Deep ke dalam Plugin Android Gradle
John Rodriguez, Square Cash
Laporan ini adalah salah satu yang terakhir di konferensi, dan saya tidak siap untuk menerima informasi yang menarik dan informatif, tetapi John keluar dan membuat laporan yang bagus dan agak hardcore tentang nuansa menarik dari Android Gradle Plugin. Saya juga merekomendasikannya untuk dilihat .

Membantu Belati Membantu Anda
Jake Wharton, Google
Laporan bagus datang dari Jack Wharton. Bersama-sama dengan Square, mereka membuat beberapa perpustakaan praktis untuk digunakan dengan Dagger yang memecahkan sejumlah masalah pengembang.

Pertama, sekarang banyak perhatian diberikan pada masalah kecepatan membangun. Ini terutama berlaku untuk Dagger dan ButterKnife karena mereka menggunakan prosesor anotasi dan kapt. Square menghadirkan solusi di mana implementasi Dagger dan ButterKnife bekerja pada refleksi alih-alih pembuatan kode. Ini sedikit mengurangi kecepatan aplikasi runtime, tetapi menghemat waktu pada waktu kompilasi, dan dalam kerangka pengembangan dev itu cukup dibenarkan, karena untuk model Pixel dan Samsung terbaru ini adalah pekerjaan yang hampir tidak terlihat.


Ini adalah bagaimana implementasi Binder terlihat dalam versi ButterKnife dengan refleksi
@NonNull @UiThread public static Unbinder bind(@NonNull Object target, @NonNull View source) { List<Unbinder> unbinders = new ArrayList<>(); Class<?> targetClass = target.getClass(); if ((targetClass.getModifiers() & PRIVATE) != 0) { throw new IllegalArgumentException(targetClass.getName() + " must not be private."); } while (true) { for (Field field : targetClass.getDeclaredFields()) { int unbinderStartingSize = unbinders.size(); Unbinder unbinder; unbinder = parseBindView(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindViews(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindDrawable(target, field, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseBindString(target, field, source); if (unbinder != null) unbinders.add(unbinder); ... } for (Method method : targetClass.getDeclaredMethods()) { Unbinder unbinder; unbinder = parseOnCheckedChanged(target, method, source); if (unbinder != null) unbinders.add(unbinder); unbinder = parseOnClick(target, method, source); if (unbinder != null) unbinders.add(unbinder); ... } targetClass = targetClass.getSuperclass(); } return new CompositeUnbinder(unbinders); } 

Perpustakaan untuk ButterKnife dapat ditemukan di tautan ini . Versi untuk Belati ada di sini .


Kedua, terkadang perlu untuk menyuntikkan dependensi ke tampilan kustom yang dideklarasikan dalam XML. Sebelumnya, Anda harus menyuntikkannya melalui metode yang ditetapkan dan melemparkannya melalui kelas-kelas dari luar, misalnya, di presenter, ketika itu melekat pada tampilan. Sekarang ada cara yang nyaman untuk ini: dependensi dapat dilemparkan melalui konstruktor segera setelah parameter yang diperlukan, dan LayoutInfater kustom dapat membuat tampilan dengan konstruktor kompleks ini.


Bagaimana tampilannya dalam kode:


MainActivity.java
 public final class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainComponent component = DaggerMainActivity_MainComponent.create(); InflationInjectFactory factory = component.getInjectFactory(); getLayoutInflater().setFactory(factory); setContentView(R.layout.main_activity); GalleryPresenter presenter = component.getGalleryPresenter(); GalleryView view = findViewById(R.id.gallery); presenter.attach(view); } @Component(modules = ViewModule.class) interface MainComponent { InflationInjectFactory getInjectFactory(); GalleryPresenter getGalleryPresenter(); } } 

GalleryView ditulis dalam xml.


GalleryView
 public final class GalleryView extends LinearLayout { private final ViewUpdater mViewUpdater; @InflationInject public GalleryView(@Assisted Context context, @Assisted AttributeSet attrs, ViewUpdater viewUpdater) { super(context, attrs); mViewUpdater = viewUpdater; } } 

Ketiga, Square dengan caranya sendiri mendekati masalah yang AutoValue pecahkan, yaitu, penciptaan pabrik untuk kelas dengan konstruktor berat. Hanya solusi ini yang diintegrasikan secara maksimal ke dalam logika Dagger.


Contoh penggunaan:


UserPresenter.java
 public final class UserPresenter { private final LoadUserInteractor mLoadUserInteractor; private final String mUserId; @AssistedInject UserPresenter(@Assisted LoadUserInteractor loadUserInteractor, @Exclamation String userid) { mLoadUserInteractor = loadUserInteractor; mUserId = userid; } @AssistedInject.Factory public interface Factory { UserPresenter create(String greeting); } ... } 

UserActivity.java
 public final class UserActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_view); UserPresenter.Factory factory = DaggerUserActivity_ UserComponent.create().getUserPresenterFctory(); UserPresenter presenter = factory.create(getIntent().getStringExtra("user_id")); presenter.attach(); ... } @Component(modules = UserModule.class) interface UserComponent { UserPresenter.Factory getUserPresenterFctory(); } } 

Saya suka betapa mudahnya implementasi solusi topikal ini terlihat. Juga menyarankan untuk melihat .


Tidak diragukan lagi, saya belajar sesuatu yang menarik untuk diri saya sendiri dari laporan konferensi, berbicara dengan rekan-rekan dari perusahaan yang berbeda, yang merupakan nilai tambah dari konferensi internasional, dan layak untuk pergi ke mereka untuk jaringan. Bonus kali ini adalah kunjungan ke London. Jika kita berbicara tentang laporan, lebih mudah untuk melihatnya secara online atau menghadiri salah satu dari banyak konferensi Rusia.

Source: https://habr.com/ru/post/id428562/


All Articles