Rumah > Java > javaTutorial > teks badan

Bilakah selamat untuk Menggunakan Kelas Dalaman Tanpa Nama dalam Android?

DDD
Lepaskan: 2024-11-09 21:32:02
asal
790 orang telah melayarinya

When is it Safe to Use Anonymous Inner Classes in Android?

Apabila Selamat Menggunakan Kelas Dalaman Tanpa Nama dalam Android

Kebocoran Memori Kelas Dalaman

Dalam Android, kebocoran memori berlaku apabila kelas dalam melebihi kelas luarnya. Ini boleh berlaku apabila kelas dalam memegang rujukan kuat kepada kelas luar, sama ada secara langsung atau tidak langsung melalui objek lain.

Situasi Selamat untuk Menggunakan Kelas Dalam Tanpa Nama

Menggunakan kelas dalaman tanpa nama di dalam Aktiviti biasanya selamat apabila:

  • Kelas tanpa nama hanya perlu mengakses ahli akhir atau statik Aktiviti.
  • Kelas tanpa nama ialah panggilan balik jangka pendek , seperti pendengar klik.
  • Kelas tanpa nama digunakan dalam kaedah yang sama di mana ia ditakrifkan.
  • Kelas luar ialah kelas dalam statik atau subkelas kelas dalam tanpa nama.

Contoh Kelas Dalaman Tanpa Nama Selamat

Sampel kod yang anda berikan dalam soalan anda ialah contoh kelas dalam tanpa nama selamat:

// This is safe because the anonymous class is a short-lived callback
okButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        dialog.dismiss();
    }
});
Salin selepas log masuk

Situasi Berbahaya untuk Menggunakan Kelas Dalaman Tanpa Nama

Menggunakan kelas dalam tanpa nama di dalam Aktiviti boleh berbahaya apabila:

  • Kelas tanpa nama memegang rujukan jangka panjang kepada Aktiviti atau konteksnya.
  • Kelas tanpa nama mengatasi kaedah kelas luar.
  • Kelas tanpa nama digunakan di berbilang tempat dalam kelas luar.

Contoh Kelas Dalaman Tanpa Nama Berbahaya

Sampel kod berikut menggambarkan kelas dalam tanpa nama berbahaya:

// This is dangerous because _droidPlayRunnable holds a long-lived reference to _someFieldOfTheActivity
_handlerToDelayDroidMove = new Handler();
_handlerToDelayDroidMove.postDelayed(_droidPlayRunnable, 10000);

private Runnable _droidPlayRunnable = new Runnable() { 
    public void run() {
        _someFieldOfTheActivity.performLongCalculation();
    }
};
Salin selepas log masuk

Memahami Kitaran Hayat Aktiviti dan Kelas Dalaman

Aktiviti Android mempunyai kitaran hayat yang menentukan apabila ia dicipta, disambung semula, dijeda dan dimusnahkan. Apabila sesuatu Aktiviti dimusnahkan, keadaan dalamannya hilang. Ini termasuk rujukan kepada mana-mana kelas dalaman dalam Aktiviti.

Melindungi Terhadap Kebocoran Memori

Untuk mengelakkan kebocoran memori dalam kelas dalaman tanpa nama, adalah penting untuk:

  • Gunakan kelas dalam tanpa nama hanya apabila perlu.
  • Pastikan kelas dalam tanpa nama mengeluarkan rujukan mereka kepada kelas luar apabila mereka tidak lagi diperlukan.
  • Sebaliknya, pertimbangkan untuk menggunakan kelas bersarang statik kelas dalam tanpa nama apabila boleh.
  • Timpa kaedah onDestroy() kelas luar untuk mengeluarkan sebarang rujukan kepada kelas dalam tanpa nama.

Atas ialah kandungan terperinci Bilakah selamat untuk Menggunakan Kelas Dalaman Tanpa Nama dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!