Konteks dalam aplikasi Android

Konteks dalam aplikasi Android


Apa itu Konteks?


Seperti namanya, ini adalah konteks dari keadaan aplikasi atau objek saat ini. Ini memungkinkan objek yang baru dibuat untuk memahami apa yang sedang terjadi. Biasanya mereka memanggilnya untuk mendapatkan informasi tentang bagian lain dari program.


Selain itu, Context adalah panduan untuk sistem, ia dapat menyediakan sumber daya, mengakses basis data, preferensi, dll. Aplikasi Android juga memiliki Activity . Ini seperti menjelajahi lingkungan tempat aplikasi Anda berjalan. Objek Activity mewarisi objek Context . Ini memungkinkan Anda untuk mengakses sumber daya dan informasi spesifik tentang lingkungan aplikasi.


Context hadir hampir di mana-mana dalam aplikasi Android dan merupakan bagian terpentingnya, jadi Anda perlu memahami cara menggunakannya dengan benar.


Penggunaan Context tidak benar dapat dengan mudah menyebabkan kebocoran memori di aplikasi Android.


Ada banyak jenis konteks yang berbeda, jadi mari kita cari tahu masing-masing dari mereka, bagaimana dan kapan menggunakannya dengan benar.


Konteks aplikasi


Ini adalah instance tunggal (satu-satunya di seluruh aplikasi), dan dapat diakses melalui fungsi getApplicationContext() . Konteks ini terkait dengan siklus hidup aplikasi. Konteks aplikasi dapat digunakan di mana Anda memerlukan konteks yang siklus hidupnya tidak terkait dengan konteks saat ini, atau ketika Anda harus melewati konteks di luar Activity .


Misalnya, jika Anda perlu membuat objek tunggal untuk aplikasi Anda, dan objek ini membutuhkan beberapa konteks, selalu gunakan konteks aplikasi.


Jika Anda melewati konteks Activity dalam kasus ini, ini akan menyebabkan kebocoran memori, karena objek tunggal akan menyimpan referensi ke Activity dan itu tidak akan dihancurkan oleh pengumpul sampah saat diperlukan.


Dalam kasus ketika Anda perlu menginisialisasi perpustakaan dalam suatu Activity , selalu sampaikan konteks aplikasi, bukan konteks Activity .


Oleh karena itu, getApplicationContext() harus digunakan ketika diketahui bahwa Anda memerlukan konteks untuk sesuatu yang dapat hidup lebih lama daripada konteks lain yang Anda miliki.


Konteks Kegiatan


Konteks ini dapat diakses di Activity dan dilampirkan ke siklus hidupnya. Konteks Activity harus digunakan ketika Anda melewati konteks dalam suatu Activity atau Anda membutuhkan konteks yang siklus hidupnya terkait dengan konteks saat ini.


getContext () di ContentProvider


Konteks ini adalah konteks aplikasi dan dapat digunakan mirip dengan konteks aplikasi. Itu dapat diakses melalui metode getContext() .


Kapan tidak bisa getApplicationContext () digunakan?


  • Ini bukan konteks lengkap yang mendukung semua yang dapat dilakukan oleh suatu Activity . Beberapa hal yang Anda coba lakukan dengan konteks ini akan gagal, terutama terkait dengan GUI.
  • Kebocoran memori dapat terjadi jika konteks dari getApplicationContext() ditahan pada beberapa objek yang tidak Anda hapus nanti. Jika konteks Activity diadakan di suatu tempat, maka segera setelah Activity dihancurkan oleh pemulung, yang lainnya juga dihancurkan. Objek Application tetap untuk kehidupan proses Anda.

Aturan praktis


Dalam kebanyakan kasus, gunakan konteks yang dapat diakses langsung dari komponen tempat Anda bekerja saat ini. Anda dapat menyimpan tautan dengan aman jika tidak melampaui siklus hidup komponen ini. Segera setelah Anda perlu menyimpan tautan ke konteks di objek yang tinggal di luar Activity Anda atau komponen lain, bahkan untuk sementara, gunakan tautan ke konteks aplikasi.

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


All Articles