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:
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(); } });
Situasi Berbahaya untuk Menggunakan Kelas Dalaman Tanpa Nama
Menggunakan kelas dalam tanpa nama di dalam Aktiviti boleh berbahaya apabila:
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(); } };
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:
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!