Dalam pemrograman Android, apa sebenarnya Context
kelas dan untuk apa kelas itu digunakan?
Saya membacanya di situs pengembang , tetapi saya tidak dapat memahaminya dengan jelas.
Dalam pemrograman Android, apa sebenarnya Context
kelas dan untuk apa kelas itu digunakan?
Saya membacanya di situs pengembang , tetapi saya tidak dapat memahaminya dengan jelas.
Jawaban:
Sederhananya:
Seperti namanya, itu adalah konteks keadaan aplikasi / objek saat ini. Ini memungkinkan objek yang baru dibuat memahami apa yang sedang terjadi. Biasanya Anda memanggilnya untuk mendapatkan informasi mengenai bagian lain dari program Anda (aktivitas dan paket / aplikasi).
Anda bisa mendapatkan konteks dengan menerapkan getApplicationContext()
, getContext()
, getBaseContext()
atau this
(ketika di kelas yang memanjang dari Context
, seperti Application, Activity, Service dan IntentService kelas).
Penggunaan konteks yang umum:
Membuat objek baru : Membuat tampilan, adaptor, pendengar baru:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Mengakses sumber daya umum standar : Layanan seperti LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
Mengakses komponen secara implisit : Mengenai penyedia konten, siaran, maksud
getApplicationContext().getContentResolver().query(uri, ...);
context.getSystemService(LAYOUT_INFLATER_SERVICE)
, di mana dan bagaimana context
didefinisikan?
Pertimbangkan Person-X adalah CEO dari perusahaan perangkat lunak pemula.
Ada arsitek utama yang hadir di perusahaan, arsitek utama ini melakukan semua pekerjaan di perusahaan yang melibatkan seperti database, UI dll.
Sekarang CEO Menyewa Pengembang baru.
Arsiteklah yang memberi tahu tanggung jawab orang yang baru direkrut berdasarkan keterampilan orang baru tersebut apakah ia akan bekerja pada Database atau UI, dll.
Ini seperti akses aktivitas android ke sumber daya aplikasi.
Ini mirip dengan ketika Anda mengunjungi hotel, Anda ingin sarapan, makan siang & makan malam di waktu yang tepat, bukan?
Ada banyak hal lain yang Anda sukai saat menginap. Bagaimana Anda mendapatkan barang-barang ini?
Anda meminta orang layanan kamar untuk membawa barang-barang ini untuk Anda.
Di sini orang-layanan kamar adalah konteks mengingat Anda adalah satu-satunya kegiatan dan hotel menjadi aplikasi Anda, akhirnya sarapan, makan siang & makan malam harus menjadi sumber daya.
Hal-hal yang melibatkan konteks adalah:
Cara lain untuk menggambarkan ini: Pertimbangkan konteks sebagai remote dari TV & saluran di televisi adalah sumber daya, layanan, menggunakan maksud dll - - - Di sini remote bertindak sebagai akses untuk mendapatkan akses ke semua sumber daya yang berbeda ke latar depan.
Jadi, Remote memiliki akses ke saluran seperti sumber daya, layanan, menggunakan maksud dll ....
Demikian juga ... Siapa pun yang memiliki akses ke remote secara alami memiliki akses ke semua hal seperti sumber daya, layanan, menggunakan maksud, dll
Berbagai metode yang Anda gunakan untuk mendapatkan konteks
getApplicationContext()
getContext()
getBaseContext()
this
(ketika di kelas aktivitas)Contoh:
TextView tv = new TextView(this);
Kata kunci this
mengacu pada konteks aktivitas saat ini.
getApplicationContext()
, getContext()
, getBaseContext()
..... Lihat ini -> ( stackoverflow.com/a/10641257 )
SomeActivityName.this
. DALAM utas untuk contoh, this
merujuk pada utas dan bukan aktivitas
Topik Konteks dalam Android tampaknya membingungkan banyak orang. Orang-orang hanya tahu bahwa Konteks diperlukan cukup sering untuk melakukan hal-hal dasar di Android. Orang terkadang panik karena mereka mencoba melakukan beberapa operasi yang memerlukan Konteks dan mereka tidak tahu bagaimana "mendapatkan" Konteks yang tepat. Saya akan mencoba untuk menghilangkan mitos ide Konteks di Android. Perlakuan penuh atas masalah ini berada di luar cakupan pos ini, tetapi saya akan mencoba memberikan tinjauan umum sehingga Anda dapat memahami apa itu Konteks dan bagaimana menggunakannya. Untuk memahami apa itu Konteks, mari kita lihat kode sumbernya:
Apa sebenarnya Konteks itu?
Yah, dokumentasi itu sendiri memberikan penjelasan yang cukup mudah: Kelas konteks adalah "Antarmuka ke informasi global tentang lingkungan aplikasi".
Kelas konteks itu sendiri dinyatakan sebagai kelas abstrak, yang implementasinya disediakan oleh OS Android. Dokumentasi lebih lanjut menyatakan bahwa Konteks "... memungkinkan akses ke sumber daya dan kelas khusus aplikasi, serta panggilan untuk operasi tingkat aplikasi seperti meluncurkan aktivitas, menyiarkan dan menerima maksud, dll".
Anda bisa mengerti dengan baik, sekarang, mengapa namanya Context. Itu hanya karena itu. Konteks menyediakan tautan atau pengait, jika Anda mau, untuk suatu Kegiatan, Layanan, atau komponen lain apa pun, dengan demikian menautkannya ke sistem, memungkinkan akses ke lingkungan aplikasi global. Dengan kata lain: Konteks memberikan jawaban untuk pertanyaan komponen "di mana saya dalam kaitannya dengan aplikasi secara umum dan bagaimana cara mengakses / berkomunikasi dengan aplikasi lainnya?" Jika ini semua tampak agak membingungkan, pandangan cepat pada metode yang diekspos oleh kelas Konteks memberikan beberapa petunjuk lebih lanjut tentang sifat aslinya.
Berikut ini adalah contoh acak dari metode-metode tersebut:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
Apa kesamaan semua metode ini? Mereka semua memungkinkan siapa pun yang memiliki akses ke Konteks untuk dapat mengakses sumber daya di seluruh aplikasi.
Konteks, dengan kata lain, mengaitkan komponen yang memiliki referensi untuk itu ke seluruh lingkungan aplikasi. Aset (pikirkan folder '/ aset' dalam proyek Anda), misalnya, tersedia di seluruh aplikasi, asalkan Kegiatan, Layanan atau apa pun yang tahu cara mengakses sumber daya tersebut. Hal yang sama berlaku untuk getResources()
yang memungkinkan untuk melakukan hal-hal seperti getResources().getColor()
yang akan menghubungkan Anda ke colors.xml
sumber daya (namun ingat bahwa aapt memungkinkan akses ke sumber daya melalui kode java, itu masalah terpisah).
Hasilnya adalah bahwa Context
adalah apa yang memungkinkan akses ke sumber daya sistem dan dengan apa yang kait komponen ke dalam “aplikasi yang lebih besar". Penampilan Mari di subclass dari Context
, kelas yang menyediakan implementasi abstrak Context
kelas. Kelas yang paling jelas adalah Activity
kelas. Activity
Mewarisi dari ContextThemeWrapper
, yang mewarisi dari ContextWrapper
, yang mewarisi dari Context
dirinya sendiri. Kelas-kelas itu berguna untuk melihat untuk memahami hal-hal di tingkat yang lebih dalam, tetapi untuk saat ini cukup untuk mengetahui itu ContextThemeWrapper
dan ContextWrapper
cukup banyak seperti apa bunyinya. Mereka menerapkan elemen abstrak dari Context
kelas itu sendiri dengan "membungkus" konteks (konteks aktual) dan mendelegasikan fungsi-fungsi tersebut ke konteks itu.ContextWrapper
kelas, metode abstrak getAssets
dari Context
kelas diimplementasikan sebagai berikut:
@Override
public AssetManager getAssets() {
return mBase.getAssets();
}
mBase
hanyalah bidang yang ditetapkan oleh konstruktor ke konteks tertentu. Jadi konteks dibungkus dan ContextWrapper
delegasi penerapan metode getAssets ke konteks itu. Mari kita kembali memeriksa Activity
kelas yang akhirnya mewarisi dari Context
untuk melihat bagaimana semua ini bekerja.
Anda mungkin tahu apa itu Kegiatan, tetapi untuk meninjau - itu pada dasarnya adalah satu hal yang dapat dilakukan pengguna. Ini mengurus penyediaan jendela di mana untuk menempatkan UI yang berinteraksi dengan pengguna '. Pengembang yang akrab dengan API lain dan bahkan non-pengembang mungkin menganggapnya secara verbal sebagai "layar." Secara teknis tidak akurat, tetapi itu tidak masalah untuk tujuan kita. Jadi bagaimana Activity
dan Context
berinteraksi dan apa yang sebenarnya terjadi dalam hubungan warisan mereka?
Sekali lagi, sangat membantu untuk melihat contoh-contoh spesifik. Kita semua tahu cara meluncurkan Aktivitas. Asalkan Anda memiliki "konteks" dari mana Anda memulai Kegiatan, Anda cukup menelepon startActivity(intent)
, di mana Intent menggambarkan konteks dari mana Anda memulai suatu Kegiatan dan Kegiatan yang ingin Anda mulai. Ini yang familier startActivity(this, SomeOtherActivity.class)
.
Dan apa itu this
? this
adalah Aktivitas Anda karena Activity
kelas diwarisi dari Context
. Scoop penuh adalah seperti ini: Ketika Anda menelepon startActivity
, pada akhirnya Activity
kelas mengeksekusi sesuatu seperti ini:
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
intent, requestCode);
Jadi ia memanfaatkan execStartActivity
dari Instrumentation
kelas (sebenarnya dari kelas batin yang Instrumentation
disebut ActivityResult
).
Pada titik ini, kita mulai mengintip sistem internal.
Di sinilah sebenarnya OS menangani semuanya. Jadi bagaimana sebenarnya Instrumentasi memulai Kegiatan? Nah, param this
dalam execStartActivity
metode di atas adalah Aktivitas Anda, yaitu Konteks, dan execStartActivity
memanfaatkan konteks ini.
30.000 ikhtisar adalah ini: kelas Instrumentasi melacak daftar Kegiatan yang dipantau untuk melakukan pekerjaannya. Daftar ini digunakan untuk mengoordinasikan semua kegiatan dan memastikan semuanya berjalan lancar dalam mengelola aliran kegiatan.
Ada beberapa operasi yang belum sepenuhnya saya perhatikan yang mengoordinasikan utas dan masalah proses. Pada akhirnya, ActivityResult
menggunakan operasi asli - ActivityManagerNative.getDefault().startActivity()
yang menggunakan Context
yang Anda lewati ketika Anda menelepon startActivity
. Konteks yang Anda berikan digunakan untuk membantu dalam "resolusi maksud" jika diperlukan. Resolusi niat adalah proses dimana sistem dapat menentukan target niat jika tidak disediakan. (Lihat panduan di sini untuk detail lebih lanjut).
Dan agar Android dapat melakukan ini, diperlukan akses ke informasi yang disediakan oleh Context
. Secara khusus, sistem perlu mengakses ke ContentResolver
sehingga dapat "menentukan tipe MIME dari data maksud". Keseluruhan ini tentang bagaimana startActivity
menggunakan konteks agak rumit dan saya tidak sepenuhnya memahami internal sendiri. Poin utama saya hanya untuk menggambarkan bagaimana sumber daya aplikasi-lebar perlu diakses untuk melakukan banyak operasi yang penting untuk aplikasi. Context
adalah apa yang menyediakan akses ke sumber daya ini. Contoh yang lebih sederhana mungkin adalah Tampilan. Kita semua tahu apa yang Anda buat Tampilan kustom dengan memperluas RelativeLayout
atau View
kelas lain , Anda harus menyediakan konstruktor yang membutuhkan aContext
sebagai argumen. Ketika Anda membuat Instantiate Lihat kustom Anda lulus dalam konteks. Mengapa? Karena Tampilan harus dapat memiliki akses ke tema, sumber daya, dan detail konfigurasi Tampilan lainnya. Konfigurasi tampilan sebenarnya adalah contoh yang bagus. Setiap Konteks memiliki berbagai parameter (bidang dalam Context
implementasi) yang diatur oleh OS itu sendiri untuk hal-hal seperti dimensi atau kepadatan tampilan. Sangat mudah untuk melihat mengapa informasi ini penting untuk mengatur Tampilan, dll.
Satu kata terakhir: Untuk beberapa alasan orang yang baru mengenal Android (dan bahkan orang yang tidak begitu baru) tampaknya sepenuhnya melupakan pemrograman berorientasi objek ketika datang ke Android. Untuk beberapa alasan, orang mencoba untuk membengkokkan pengembangan Android mereka ke paradigma yang telah dipahami sebelumnya atau perilaku belajar.
Android memiliki paradigma sendiri dan pola tertentu yang sebenarnya cukup konsisten jika melepaskan konsep yang sudah Anda bayangkan sebelumnya dan cukup membaca dokumentasi dan panduan pengembang. Namun, poin saya yang sebenarnya, ketika “mendapatkan konteks yang tepat” kadang-kadang bisa rumit, orang-orang panik dengan tidak adil karena mereka mengalami situasi di mana mereka membutuhkan konteks dan berpikir mereka tidak memilikinya. Sekali lagi, Java adalah bahasa berorientasi objek dengan desain warisan.
Anda hanya "memiliki" konteks di dalam Aktivitas Anda karena aktivitas Anda sendiri diwarisi dari Konteks. Tidak ada keajaiban untuk itu (kecuali untuk semua hal yang dilakukan OS dengan sendirinya untuk mengatur berbagai parameter dan untuk "mengkonfigurasi" konteks Anda dengan benar). Jadi, mengesampingkan masalah memori / kinerja (misalnya menyimpan referensi ke konteks ketika Anda tidak perlu atau melakukannya dengan cara yang memiliki konsekuensi negatif pada memori, dll), Konteks adalah objek seperti yang lain dan dapat diedarkan di sekitar sama seperti POJO (Obyek Jawa Kuno Biasa). Kadang-kadang Anda mungkin perlu melakukan hal-hal pintar untuk mengambil konteks itu, tetapi setiap kelas Java reguler yang memanjang dari tidak lain dari Object itu sendiri dapat ditulis dengan cara yang memiliki akses ke konteks; cukup memaparkan metode publik yang mengambil konteks dan kemudian menggunakannya di kelas itu sesuai kebutuhan.
Konteks adalah pegangan untuk sistem; ini menyediakan layanan seperti menyelesaikan sumber daya, mendapatkan akses ke database dan preferensi, dan sebagainya. Aplikasi Android memiliki aktivitas. Konteks seperti pegangan ke lingkungan aplikasi Anda sedang berjalan masuk. Objek aktivitas mewarisi objek Konteks.
Untuk informasi lebih lanjut, lihat di Pengantar pengembangan Android dengan Android Studio - Tutorial .
Context
adalah "antarmuka" ke informasi global tentang lingkungan aplikasi. Dalam praktiknya, Context
sebenarnya adalah kelas abstrak , yang implementasinya disediakan oleh sistem Android.
Ini memungkinkan akses ke sumber daya dan kelas khusus aplikasi, serta panggilan untuk operasi tingkat aplikasi, seperti meluncurkan aktivitas, menyiarkan dan menerima maksud, dll.
Pada gambar berikut, Anda dapat melihat hierarki kelas, di mana Context
kelas akar hierarki ini. Secara khusus, ada baiknya menekankan bahwa itu Activity
adalah keturunan Context
.
Apa Context
sebenarnya
Per dokumentasi referensi Android, itu adalah entitas yang mewakili berbagai data lingkungan. Ini menyediakan akses ke file lokal, database, loader kelas yang terkait dengan lingkungan, layanan (termasuk layanan tingkat sistem), dan banyak lagi. Sepanjang buku ini, dan dalam pengodean sehari-hari Anda dengan Android, Anda akan sering melihat Konteks yang diputar-balikkan.
Dari buku " Android in Practice ", hal. 60.
Beberapa API Android memerlukan Context
parameter sebagai
Jika Anda melihat melalui berbagai API Android, Anda akan melihat bahwa banyak dari mereka mengambil android.content.Context
objek sebagai parameter. Anda juga akan melihat bahwa suatu Kegiatan atau Layanan biasanya digunakan sebagai a
Context
. Ini berfungsi karena kedua kelas ini diperluas dari Context
.
Contoh sederhana untuk dipahami context
di android:
Setiap bos memiliki asisten untuk dijaga, untuk melakukan semua tugas yang kurang penting dan memakan waktu. Jika file atau secangkir kopi diperlukan, asisten sedang dalam perjalanan. Beberapa bos nyaris tidak tahu apa yang sedang terjadi di kantor, jadi mereka bertanya kepada asisten mereka mengenai hal ini juga. Mereka melakukan beberapa pekerjaan sendiri tetapi untuk sebagian besar hal lain mereka membutuhkan bantuan asisten mereka.
Dalam skenario ini,
Boss - adalah aplikasi Android
Asisten - adalah konteks
File / secangkir kopi - adalah sumber daya
Kami umumnya memanggil konteks ketika kami perlu mendapatkan informasi tentang berbagai bagian dari aplikasi kami seperti Kegiatan, Aplikasi dll.
Beberapa operasi (hal-hal di mana asisten diperlukan) di mana konteks terlibat:
Berbagai cara mendapatkan konteks:
getContext()
getBaseContext()
getApplicationContext()
this
Konteks Android adalah Antarmuka (dalam arti umum, bukan dalam arti Java; di Jawa, Context
sebenarnya adalah kelas abstrak!) Yang memungkinkan akses ke sumber daya aplikasi spesifik dan kelas serta informasi tentang lingkungan aplikasi.
Jika aplikasi Android Anda adalah aplikasi web, konteks Anda akan mirip ServletContext
(saya tidak membuat perbandingan yang tepat di sini).
Aktivitas dan layanan Anda juga diperluas Context
, sehingga mereka mewarisi semua metode tersebut untuk mengakses informasi lingkungan tempat aplikasi berjalan.
Context
merupakan pegangan untuk mendapatkan data lingkungan.Context
kelas itu sendiri dinyatakan sebagai abstrak, yang implementasinya disediakan oleh OS android.Context
seperti remote TV & saluran di televisi adalah sumber daya, layanan, dll.
Apa yang bisa kamu lakukan dengan itu?
Cara mendapatkan konteks:
Hanya menaruhnya di sana untuk pemula;
Jadi Pertama mengerti Konteks Kata:
Dalam bahasa Inggris-lib. itu berarti:
"Keadaan yang membentuk pengaturan untuk suatu peristiwa, pernyataan, atau ide, dan dalam hal yang dapat dipahami dan dinilai sepenuhnya."
"Bagian-bagian dari sesuatu yang ditulis atau diucapkan yang segera mendahului dan mengikuti kata atau bagian dan memperjelas artinya."
Sekarang ambil pemahaman yang sama untuk dunia pemrograman:
konteks keadaan aplikasi / objek saat ini. Ini memungkinkan objek yang baru dibuat memahami apa yang sedang terjadi. Biasanya Anda memanggilnya untuk mendapatkan informasi mengenai bagian lain dari program Anda (aktivitas, paket / aplikasi)
Anda bisa mendapatkan konteks dengan memohon getApplicationContext()
, getContext(), getBaseContext()
atau this
(ketika di kelas aktivitas).
Untuk Mendapatkan Konteks Di Mana Saja dalam aplikasi, gunakan kode berikut:
Buat kelas baru AppContext
di dalam aplikasi android Anda
public class AppContext extends Application {
private static Context context;
public void onCreate(){
super.onCreate();
AppContext.context = getApplicationContext();
}
public static Context getAppContext() {
return AppContext.context;
}
}
Sekarang kapan pun Anda menginginkan konteks aplikasi di kelas non-aktivitas, panggil metode ini dan Anda memiliki konteks aplikasi.
Semoga bantuan ini;)
Kelas android.content.Context
menyediakan koneksi ke sistem Android dan sumber daya proyek. Ini adalah antarmuka ke informasi global tentang lingkungan aplikasi.
Konteks juga menyediakan akses ke Layanan Android, misalnya Layanan Lokasi.
Kegiatan dan Layanan memperluas Context
kelas.
Konteks adalah instance dari kelas android.content.Context menyediakan koneksi ke sistem Android yang menjalankan aplikasi. Misalnya, Anda dapat memeriksa ukuran tampilan perangkat saat ini melalui Konteks.
Ini juga memberikan akses ke sumber daya proyek. Ini adalah antarmuka ke informasi global tentang lingkungan aplikasi.
Kelas konteks juga menyediakan akses ke layanan Android, misalnya, manajer alarm untuk memicu peristiwa berbasis waktu.
Kegiatan dan layanan memperluas kelas Konteks. Oleh karena itu mereka dapat langsung digunakan untuk mengakses Konteks.
Konteks adalah antarmuka ke informasi global tentang lingkungan aplikasi. Ini adalah kelas abstrak yang implementasinya disediakan oleh Android
sistem.
Context
memungkinkan akses ke sumber daya dan kelas khusus aplikasi, serta panggilan untuk operasi tingkat aplikasi seperti launching activities, broadcasting and receiving intents, etc.
Ini contohnya
public class MyActivity extends Activity {
public void Testing() {
Context actContext = this; /*returns the Activity Context since Activity extends Context.*/
Context appContext = getApplicationContext(); /*returns the context of the single, global Application object of the current process. */
Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
Context BtnContext = BtnShowAct1.getContext(); /*returns the context of the View. */
Untuk perincian lebih lanjut, Anda dapat mengunjungi http://developer.android.com/reference/android/content/Context.html
Konteks pada dasarnya untuk akses sumber daya dan mendapatkan rincian lingkungan aplikasi (untuk konteks aplikasi) atau aktivitas (untuk konteks aktivitas) atau ...
Untuk menghindari kebocoran memori Anda harus menggunakan konteks aplikasi untuk setiap komponen yang memerlukan objek konteks .... untuk lebih lanjut klik di sini
Konteks adalah konteks keadaan aplikasi / objek saat ini. Merupakan entitas yang mewakili berbagai data lingkungan. Konteks membantu aktivitas saat ini untuk berinteraksi dengan lingkungan luar Android seperti file lokal, database, pemuat kelas yang terkait dengan lingkungan, layanan termasuk layanan tingkat sistem, dan banyak lagi.
Konteks adalah pegangan untuk sistem. Ini menyediakan layanan seperti menyelesaikan sumber daya, mendapatkan akses ke database dan preferensi, dan sebagainya. Aplikasi android memiliki aktivitas. Ini seperti pegangan ke lingkungan aplikasi Anda saat ini berjalan masuk. Objek aktivitas mewarisi objek Konteks.
Metode pemanggilan berbeda yang Anda gunakan untuk mendapatkan konteks 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. atau ini (ketika di kelas aktivitas).
Konteks berarti Android mengetahui aktivitas apa yang harus saya ikuti atau lakukan.
1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
ini digunakan dalam hal ini.
Context context = ActivityName.this;
2 -startActivity(new Intent(context,LoginActivity.class));
dalam konteks ini berarti dari aktivitas mana Anda ingin pergi ke aktivitas lain. konteks atau ActivityName.ini lebih cepat, getContext dan getApplicatinContext.
A Context
adalah apa yang kebanyakan dari kita sebut Aplikasi . Itu dibuat oleh sistem Android dan hanya mampu melakukan apa yang bisa dilakukan oleh aplikasi. Di Tomcat, sebuah Konteks juga disebut sebagai aplikasi.
Ada satu Konteks yang menampung banyak Kegiatan, setiap Kegiatan mungkin memiliki banyak Tampilan.
Jelas, beberapa orang akan mengatakan bahwa itu tidak cocok karena ini atau itu dan mereka mungkin benar, tetapi mengatakan bahwa Konteks adalah aplikasi Anda saat ini akan membantu Anda untuk memahami apa yang Anda masukkan dalam parameter metode.
Mari kita memiliki analogi kecil sebelum menyelam jauh dalam teknis dari Konteks
Setiap Bos memiliki asisten atau seseorang (pesuruh) yang melakukan hal-hal yang kurang penting dan lebih menyita waktu baginya. Misalnya, jika mereka membutuhkan file atau kopi maka asisten akan sedang berjalan. Boss tidak akan tahu apa yang terjadi di latar belakang tetapi file atau tugas akan dikirimkan
So Here
Boss -
Asisten Aplikasi Android -
File Konteks atau secangkir kopi - Sumberdaya
Konteks adalah titik akses Anda untuk sumber daya terkait aplikasi
Mari kita lihat beberapa sumber daya atau tugas seperti itu
Meluncurkan suatu kegiatan.
Mendapatkan path absolut ke direktori cache spesifik aplikasi pada sistem file.
Menentukan apakah izin yang diberikan diizinkan untuk proses tertentu dan ID pengguna yang berjalan di sistem.
Memeriksa apakah Anda telah diberikan izin tertentu.
Dan seterusnya.
Jadi, jika aplikasi Android ingin memulai suatu kegiatan, langsung ke Context
(Access Point), danContext
kelas memberinya kembali sumber daya (Maksud dalam hal ini).
Seperti kelas lainnya, Context
kelas juga memiliki bidang dan metode.
Anda dapat menjelajahi lebih Context
dalam tentang dokumentasi resmi, mencakup hampir semua, metode yang tersedia, bidang, dan bahkan cara menggunakan bidang dengan metode.
Contoh dari kelas android.content.Context menyediakan koneksi ke sistem Android yang menjalankan aplikasi. Misalnya, Anda dapat memeriksa ukuran tampilan perangkat saat ini melalui Konteks.
Ini juga memberikan akses ke sumber daya proyek. Ini adalah antarmuka ke informasi global tentang lingkungan aplikasi.
Kelas konteks juga menyediakan akses ke layanan Android, misalnya, manajer alarm untuk memicu peristiwa berbasis waktu.
Kegiatan dan layanan memperluas kelas Konteks. Oleh karena itu mereka dapat langsung digunakan untuk mengakses Konteks.
Jika Anda ingin menghubungkan Context dengan kelas-kelas lain yang akrab di Android, perhatikan struktur ini:
Konteks <ContextWrapper <Aplikasi
Konteks <ContextWrapper <ContextThemeWrapper <Activity
Konteks <ContextWrapper <ContextThemeWrapper <Activity <ListActivity
Konteks <ContextWrapper <Layanan
Konteks <ContextWrapper <Layanan <IntentService
Jadi, semua kelas itu adalah konteks dengan caranya sendiri. Anda dapat memberikan Layanan dan ListActivity ke Konteks jika Anda mau. Tetapi jika Anda melihat lebih dekat, beberapa kelas mewarisi tema juga. Dalam aktivitas atau fragmen, Anda ingin mereka diterapkan untuk pandangan Anda, tetapi tidak peduli tentang hal itu Kelas layanan , misalnya.
Saya menjelaskan perbedaan konteks di sini .
Sederhananya, Android Context
adalah kekacauan yang tidak akan Anda sukai sampai Anda berhenti mengkhawatirkan.
Android Context
adalah:
Benda-benda dewa.
Hal yang ingin Anda sampaikan semua aplikasi Anda ketika Anda mulai mengembangkan untuk Android, tetapi akan menghindari melakukannya ketika Anda mendapatkan sedikit lebih dekat dengan pemrograman, pengujian dan Android itu sendiri.
Ketergantungan yang tidak jelas.
Sumber umum kebocoran memori.
PITA untuk pengujian.
Konteks aktual yang digunakan oleh sistem Android untuk mengirimkan izin, sumber daya, preferensi, layanan, siaran, gaya, menampilkan dialog dan menggembungkan tata letak. Dan Anda memerlukan Context
contoh berbeda untuk beberapa hal terpisah (jelas, Anda tidak dapat menampilkan dialog dari konteks aplikasi atau layanan; tata letak yang meningkat dari konteks aplikasi dan aktivitas mungkin berbeda).
Konteks adalah api khusus android untuk setiap Sandbox aplikasi aplikasi yang menyediakan akses data pribadi aplikasi seperti ke sumber daya, database, direktori arsip pribadi, preferensi, pengaturan ...
Sebagian besar privatedata adalah sama untuk semua kegiatan / layanan / penyiar siaran dari satu aplikasi.
Karena Aplikasi, Aktivitas, Layanan mengimplementasikan antarmuka Konteks, mereka dapat digunakan di mana panggilan api memerlukan parameter Konteks
Context
berarti komponen (atau aplikasi) dalam berbagai periode waktu. Jika saya memakan begitu banyak makanan antara 1 hingga 2 siang, maka konteks saya pada waktu itu digunakan untuk mengakses semua metode (atau sumber daya) yang saya gunakan selama waktu itu. Konten adalah komponen (aplikasi) untuk waktu tertentu. Context
komponen aplikasi terus berubah berdasarkan siklus hidup komponen atau aplikasi yang mendasarinya. Misalnya, di dalam onCreate () dari sebuahActivity
,
getBaseContext()
- memberikan context
dari Activity
yang ditetapkan (dibuat) oleh konstruktor aktivitas.
getApplicationContext()
- memberikan Context
pengaturan (dibuat) selama pembuatan aplikasi.
Catatan: <application>
memegang semua Komponen Android.
<application>
<activity> .. </activity>
<service> .. </service>
<receiver> .. </receiver>
<provider> .. </provider>
</application>
Artinya, ketika Anda menelepon getApplicationContext()
dari dalam komponen apa pun, Anda memanggil konteks umum dari seluruh aplikasi.
Context
terus dimodifikasi oleh sistem berdasarkan siklus hidup komponen.
Pikirkan Konteks sebagai kotak dengan sumber berbeda: string, warna, dan font. Jika Anda membutuhkan sumber daya, Anda membuka kotak ini. Ketika Anda memutar layar, kotak ini berubah karena orientasi berubah menjadi lanskap.
Context
berarti arus.
Context
gunakan untuk melakukan operasi untuk layar saat ini. ex.
1. getApplicationContext ()
2. getContext ()
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
Penjelasan hebat! Untuk melengkapi semua hal di atas, saya menemukan ini dari MindOrks sangat membantu, bahkan menunjukkan beberapa kasus penggunaan dasar untuk membuat pikiran Anda:
Di Jawa, kami mengatakan kata kunci ini merujuk pada keadaan objek aplikasi saat ini.
Demikian pula, dalam alternatif yang kita miliki Context
dalam Pengembangan Android.
Ini dapat didefinisikan secara eksplisit atau implisit,
Context con = this;
getApplicationContext();
getBaseContext();
getContext();
this
hanya berfungsi dalam aktivitas. Konteks bukan alternatif untuk "ini" - konteks digunakan untuk mengakses fitur sistem, dan banyak lagi. Anda terlalu menyederhanakan Konteks dan kehilangan poin utama dengannya.
Atribut ini menyatakan kegiatan yang tata letak ini dikaitkan dengan secara default .