Bagaimana cara menghentikan program yang berjalan di bawah Eclipse?

107

Saya tidak dapat menemukan opsi untuk menghentikan program yang sedang berjalan (baik dalam mode debug atau rilis).

Jadi untuk saat ini, saya menghentikan program (mengembalikan kontrol ke Eclipse) hanya dengan menutup emulator.

Apakah ada cara yang lebih baik untuk melakukan ini? Sehingga saya tidak perlu menutup (dan memulai ulang) emulator?

Android Eve
sumber

Jawaban:

112

Saya mengerti Anda ingin menghentikan aplikasi Anda di emulator. Untuk ini, Anda dapat membuka jendela perangkat (dalam perspektif debug), pilih proses, lalu tekan tombol stop pada jendela yang sama.

Varun
sumber
1
Terima kasih banyak. Anda menyelamatkan hidup saya. Saya akan menerima jawaban Anda dalam 7 menit ... :)
Android Eve
1
Menambahkan cara lain yang baru saya temukan: di emulator pilih Pengaturan> Aplikasi> Kelola aplikasi> (pilih aplikasi)> Paksa berhenti.
Android Eve
Ya. itu adalah cara lain, tetapi perlu waktu untuk mencapainya, kecuali jika Anda memiliki latar belakang itu. :)
Varun
11
tombol Stop seperti di Visual Studio akan sangat bagus. ugh.
Ian Davis
Baru saja memulai aplikasi tepat setelah pembuatan proyek dan ketika mengklik tombol stop itu tidak menghentikan proses tetapi menembakkan RemoteException sending setActive(false) notificationdi viewport
logCat
77

Mereka yang merasa bosan beralih antar perspektif untuk menghentikan program (seperti yang saya lakukan), Anda dapat melihat jendela perangkat dalam perspektif Anda saat ini dengan memilih

Windows > Tampilkan Tampilan > Lainnya ... > Android > Perangkat

GeekityGeek
sumber
3
Terima kasih, inilah yang saya cari! +1
Sabobin
+1. Hebat!, Dan jika saya ingin menjalankannya lagi, saya cukup memulainya dari perangkat lagi, dan berfungsi dengan sempurna.
Francisco Corrales Morales
Satu langkah lagi, temukan packageID Anda di daftar. Awalnya saya ditunda oleh itu, tapi kemudian saya seperti "Oh keren! Saya bisa melihat semuanya." Senang melihat apa yang Android miliki di bawah kapnya (catatan: Saya menggunakan simulator Genymotion, mungkin emulator adalah apa yang Anda katakan, saya tidak tahan menunggu untuk dijalankan)
Stephen J
Hal ini melanggar siklus hidup aplikasi Android dan dapat menyebabkan keluarnya tidak terlacak yang mengakibatkan ketidakmampuan untuk memulai ulang aplikasi dan memaksa perangkat melakukan boot ulang untuk menyelesaikan masalah.
Dominic Cerisano
13

Perlu diingat bahwa di Android, program biasanya hanya 'berhenti' jika Anda menyelesaikan () atau sistem menghancurkannya saat memori diperlukan. Mengapa berhenti sama sekali? Anda tidak perlu berhenti untuk fix / re-install / re-test, misalnya.

DJC
sumber
Ini adalah wawasan yang luar biasa. Terima kasih. +1
Android Eve
1
@Eve .. dengan senang hati. Untuk detail berdarah, periksa stackoverflow.com/questions/2033914/…
DJC
4
Ya, mungkin. Tapi ini tidak benar-benar menjawab pertanyaan itu. Dalam kasus saya, saya bermain-main dengan kelas AudioTrack dan menghasilkan aliran suara. Mendengarkan gelombang sinus itu sepanjang waktu menjadi sangat menjengkelkan. Saya harus pergi ke DDMS, mencari thread yang benar, pilih, lalu temukan ikon STOP. Sangat timpang.
Vagrant
2
Bagaimana Anda dapat mengatur ulang status program Anda tanpa henti?
Erik Engheim
Saya perhatikan dengan Emulator, itu tidak akan menjalankan program Anda lagi sampai setelah beberapa menit atau lebih (mungkin karena masih berjalan). Sangat berguna untuk menyelesaikan lebih awal, saat Anda perlu melakukan sedikit pengeditan, lalu segera periksa di Emulator. Dan sering kali, Anda melakukan beberapa pengeditan kecil, sehingga dapat menghentikan aplikasi yang sedang berjalan dan memuatnya kembali untuk memeriksa dengan cepat menghemat banyak waktu.
Azurespot
12

Dalam perspektif "Debug", pilih root aplikasi di bawah "Debug" (di mana daftar utas aktif berada) dan klik tombol berhenti.

Chris Thompson
sumber
Terima kasih kembali. Saya mengerti instruksi Anda hanya setelah membaca @ varun's. +1
Android Eve
@Android Eve, ah, saya senang ini membantu. Maaf, itu tidak cukup jelas!
Chris Thompson
Tidak apa-apa. Saya benar-benar bingung sehubungan dengan pengembangan Android, meskipun (dan mungkin karena) pengembangan bertahun-tahun di banyak platform lain.
Android Malam
Ya, sejauh ini ini adalah solusi termudah. (Sebenarnya, seharusnya mungkin jawaban yang diterima). Tombol Stop hanya dinonaktifkan ketika utas disorot, bukan entri [Aplikasi Android] teratas.
Colin
7

Bekerja untuk saya.

Windows -> Buka perspektif -> Lainnya ... -> DDMS

  1. Di tampilan Android, di jendela kiri, Anda dapat melihat "Perangkat". Harus ada daftar aplikasi yang sedang berjalan (Emulator atau perangkat fisik). Klik pada aplikasi yang ingin Anda tutup. Biasanya nama adalah nama paket + nama aplikasi
  2. Sekarang klik pada simbol "Stop".

Untuk kembali ke tampilan normal, Anda hanya perlu menekan tombol Java di sisi kanan atas. Anda juga dapat melakukannya dengan menekan: Windows -> Buka perspektif -> Lainnya ... -> Java

Zain Ali
sumber
2

jawaban ini tidak berhubungan dengan Eclipse, tetapi karena pertanyaan ini muncul dalam pencarian Google untuk menghentikan program Android yang sedang berjalan, saya ingin menawarkan metode baris perintah. jalankan adb shell, temukan PID dari proses yang ingin Anda bunuh ps, misalnya milik saya adalah:

u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg

jadi adil kill 2097dan Anda akan melihat layar utama muncul lagi.

jcomeau_ictx
sumber
Pelanggaran siklus hidup aplikasi. Dapat menyebabkan masalah dengan sumber daya sistem yang tidak dirilis dan memaksa boot ulang perangkat untuk dihapus.
Dominic Cerisano
0

Tambahkan breakpoint ke kode Anda di mana Anda ingin berhenti dan kemudian jalankan dalam mode Debug dengan menekan F11.

salman khalid
sumber
0

Zombie Android Gambar 1 - Banyak Zombie terbunuh selama penelitian Jawaban ini

Membunuh aplikasi Android, proses Java VM di tingkat OS tidak disarankan. Sayangnya, inilah yang dilakukan "stop" jendela perangkat eclipse, seperti halnya System.exit () dan perintah shell "kill".

Ini merongrong metode siklus hidup aplikasi normal seperti onStop (), onDestroy (), dan finalize ().

Banyak aplikasi memerlukan metode ini untuk keluar dengan lancar (misalnya jika mereka menggunakan objek sistem seperti Sensor, MediaPlayer, Equalizer, Visualizer, dll).

Objek sistem ini berkeliaran dengan pegangan kematian zombie pada sumber daya sistem jika release () tidak dipanggil secara eksplisit selama metode siklus hidup ini. Lihat gbr. 1 di atas. Ini dapat mencegah aplikasi memulai ulang, dan bahkan memerlukan boot ulang. Itu adalah aspek yang tidak bisa dilacak.

Satu-satunya solusi adalah memastikan Anda selalu keluar dari aplikasi secara bersih dengan panggilan ke onStop () atau onDestroy () atau setidaknya finalize (). Debugger melakukan ini, seperti halnya OS saat dimatikan.

Anda dapat menyetel aplikasi Anda untuk menjebak peristiwa SIG_HUP untuk memaksa keluar dengan lancar dari baris perintah.

Satu-satunya saat Anda akan menghentikan VM aplikasi adalah dalam status ANR (sudah menjadi zombie). ANR harus diperbaiki. Jangan pernah menerapkan aplikasi yang dapat memasuki keadaan ini. Itu sangat kasar.

Anda dapat menggunakan Google analytics dan Play Store untuk memantau penerapannya. Anda tidak ingin pengguna yang marah memberikan ulasan ANR bintang tunggal setelah harus reboot karena aplikasi zombie Anda. Sangat buruk.

Ingatlah bahwa Android adalah Linux: perlakukan itu seperti OS asli, dan hormati siklus hidup aplikasi jika tidak, Anda pasti akan menghadapi Kiamat Zombie yang ditakuti.

PS: Kalau analogi Zombie tidak suka bagaimana dengan Fantasia?

masukkan deskripsi gambar di sini

Dominic Cerisano
sumber
0

Lihat gambar: 1. Klik DDMS; 2. Pilih aplikasi saat ini; 3. Klik "Berhenti" masukkan deskripsi gambar di sini

Eugene Bosikov
sumber
Saya melakukan ini dan aplikasi berhenti men-debug. tetapi ada kasus: 1 - putuskan perangkat dari usb, jalankan aplikasi kemudian ketika aplikasi menghadapi kesalahan itu tutup dan setelah itu pada setiap proses buka formulir debug dan tunggu kabel usb untuk terhubung atau tekan tombol kembali. 2- perangkat terhubung ke usb dan aplikasi dijalankan (Ctrl + f11) kemudian, secara otomatis aplikasi berjalan di bawah mode debug. Untuk mengatasi ini, saya membuat proyek baru, dan satu per satu menyalin / menempelkan file ke proyek baru, tetapi hal yang sama terjadi lagi. Sekarang ada bantuan?
Ahmad Ebrahimi