Apa perbedaan antara Aktivitas dan Konteks?

92

Apakah Aktivitas dan Konteks sama, atau adakah perbedaan?

Kapan saya harus memiliki metode untuk meneruskan Aktivitas, dan kapan Konteks?

Android
sumber
@Egor Thnx man, dan bermuka masam saya akan mengurusnya .. sebelum mengajukan pertanyaan .. dapatkah kamu membantu saya dalam satu pertanyaan lagi .. apa akar dari semua aktivitas di android
Android
silakan periksa diskusi di bawah ini untuk menghapus pertanyaan
Egor
Sayang sekali tidak ada jawaban yang sangat lengkap. Ini adalah item pertama yang muncul untuk pencarian google.
SMBiggs

Jawaban:

118

Sejauh yang saya mengerti: Konteks adalah Objek Dasar. Jadi setiap Aktivitas yang sama seperti Aplikasi berasal dari Konteks. Artinya setiap Aktivitas dan setiap ApplicationIS a Context;

Dari developer.android.com Aktivitas

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.view.ContextThemeWrapperandroid.app.Activity

Dan Aplikasi

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.app.Application

Konteks Aplikasi bertahan, selama aplikasi Anda hidup, sementara konteks Aktivitas mati bersama Aktivitas Anda (tidak valid setelah onDestroyAktivitas itu).

Jadi jika Anda membutuhkan Konteks di seluruh Aktivitas (yaitu di Singleton) Anda akan lebih baik menggunakan konteks Aplikasi.

Biasanya pada metode Kerangka Android di mana konteks diharapkan, tidak ada bedanya mana yang Anda lewati. Tetapi selalu waspadai MemoryLeaks jika Anda menyimpan Referensi untuk Konteks yang berumur panjang

Rafael T
sumber
2
Ya, maaf, saya telah memeriksa tautannya, memang Konteks adalah superclass dari Aktivitas. Bagaimanapun, tidak sepenuhnya benar untuk mengatakan bahwa Aktivitas adalah Konteks, Aktivitas adalah objek yang lebih kompleks, sedangkan Konteks hanyalah blok yang menyimpan informasi dan memberikan akses ke sumber daya.
Egor
@Rafael T Thnx karena telah memberikan jawaban yang tepat
Android
17
Sepenuhnya benar jika saya mengacu pada bahasa Berorientasi Objek: setiap Objek di Java berasal dari Object.class, jadi di FACT semuanya ADALAH Objek. Untuk lebih spesifik: Aktivitas adalah spesialisasi Konteks. Jika saya memiliki Hewan Kelas Abstrak dan dua Kelas yang diturunkan dari Hewan (Kucing, Anjing), keduanya setidaknya Hewan. Di mana pun seekor Hewan diperlukan, Anda baik-baik saja untuk melewati Kucing atau Anjing, karena itu sama untuk Konteks! Mohon konfirmasi Informasi sebelum Anda downvote saya
Rafael T
1
"Konteks Aktivitas bertahan, selama aplikasi Anda hidup, sementara konteks Aktivitas mati dengan Aktivitas Anda" tampak tidak aktif. Bukankah yang pertama harus menjadi konteks Aplikasi ?
FirstOne
8

Seperti yang Anda lihat di dokumen Android :

Kelas Activity diturunkan dari "ContextThemeWrapper", dan yang ini dari "ContextWrapper", dan yang satu ini dari "Context".

Jadi, ya, Aktivitas memperluas Konteksnya!

zapotec.dll
sumber