Làm cách nào để dừng một chương trình đang chạy trong Eclipse?


107

Tôi không thể tìm thấy tùy chọn để dừng chương trình đang chạy (cho dù ở chế độ gỡ lỗi hay phát hành).

Vì vậy, hiện tại, tôi dừng chương trình (trả lại quyền điều khiển cho Eclipse) chỉ bằng cách đóng trình giả lập.

Có cách nào tốt hơn để làm điều này không? Như vậy mà tôi không cần phải đóng (và khởi động lại) trình giả lập?

Câu trả lời:


112

Tôi hiểu rằng bạn muốn dừng ứng dụng của mình trên trình giả lập. Đối với điều này, bạn có thể mở cửa sổ thiết bị (ở góc độ gỡ lỗi), chọn quy trình và sau đó nhấn nút dừng trên cùng cửa sổ.


1
Cám ơn rất nhiều. Bạn đã cứu cuộc đời tôi. Tôi sẽ chấp nhận câu trả lời của bạn sau 7 phút ... :)
Android Eve

1
Thêm một cách khác mà tôi vừa khám phá ra: trong giả lập chọn Cài đặt> Ứng dụng> Quản lý ứng dụng> (chọn ứng dụng)> Buộc dừng.
Android Eve

Ya. đó là một cách khác, nhưng phải mất thời gian để đến được đó, trừ khi bạn có điều đó trong nền. :)
Varun

11
một nút Dừng như trong Visual Studio sẽ rất tuyệt. ugh.
Ian Davis

Chỉ khởi động ứng dụng ngay sau khi tạo dự án và khi nhấp vào nút dừng, nó không giết quá trình nhưng kích hoạt một RemoteException sending setActive(false) notificationtrong chế độ xem
logCat

77

Những người cảm thấy tẻ nhạt khi chuyển đổi giữa các phối cảnh để dừng chương trình (như tôi đã làm), bạn có thể xem các cửa sổ thiết bị ở góc độ hiện tại của mình bằng cách chọn

Windows > Show View > Other ... > Android > Devices


3
Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm! +1
Sabobin

+1. Tuyệt vời !, và nếu tôi muốn nó chạy lại, tôi chỉ cần khởi động lại từ thiết bị và nó hoạt động hoàn hảo.
Francisco Corrales Morales

Một bước nữa, hãy tìm packageID của bạn trên danh sách. Lúc đầu, tôi cảm thấy khó chịu vì điều đó, nhưng sau đó tôi giống như "Ồ tuyệt! Tôi có thể nhìn thấy mọi thứ." Rất vui được nhìn thấy những gì Android có dưới mui xe của mình (lưu ý: Tôi đang sử dụng Genymotion mô phỏng, có thể giả lập là những gì bạn nói, tôi chỉ không thể đứng chờ đợi cho nó để chạy)
Stephen J

Điều này vi phạm vòng đời của ứng dụng Android và có thể dẫn đến các lần thoát không đúng quy cách dẫn đến không thể khởi động lại ứng dụng và buộc thiết bị khởi động lại để khắc phục sự cố.
Dominic Cerisano

13

Hãy nhớ rằng trên Android, các chương trình thường chỉ 'dừng' nếu bạn hoàn thành () hoặc hệ thống sẽ hủy chúng khi yêu cầu bộ nhớ. Tại sao dừng lại ở tất cả? Ví dụ, bạn không cần phải dừng lại để sửa / cài đặt lại / kiểm tra lại.


Đây là một cái nhìn sâu sắc Cảm ơn bạn. +1
Android Eve

1
@Eve .. niềm vui của tôi. Để biết chi tiết về máu, hãy kiểm tra stackoverflow.com/questions/2033914/…
DJC

4
Vâng, có thể. Nhưng điều này không thực sự trả lời câu hỏi. Trong trường hợp của tôi, tôi đang chơi với lớp AudioTrack và tạo ra một luồng âm thanh. Nó thực sự khó chịu khi nghe làn sóng sin đó mọi lúc. Tôi phải vào DDMS, tìm đúng chủ đề, chọn nó, sau đó tìm biểu tượng DỪNG. Rất khập khiễng.
Vagrant

2
Làm thế nào bạn có thể đặt lại trạng thái của chương trình của bạn mà không dừng lại?
Erik Engheim

Tôi nhận thấy với Trình giả lập, nó sẽ không chạy lại chương trình của bạn cho đến sau vài phút hoặc lâu hơn (có thể vì nó vẫn đang chạy). Sẽ rất hữu ích nếu bạn hoàn thành sớm hơn, khi bạn cần thực hiện một chỉnh sửa nhỏ, sau đó nhanh chóng kiểm tra nó trong Trình mô phỏng. Và thông thường, bạn đang thực hiện một số chỉnh sửa nhỏ, vì vậy có thể dừng ứng dụng đang chạy và tải lại để kiểm tra nhanh chóng sẽ tiết kiệm rất nhiều thời gian.
Azurespot

12

Ở góc độ "Gỡ lỗi", chọn thư mục gốc của ứng dụng trong "Gỡ lỗi" (nơi liệt kê các chủ đề đang hoạt động) và nhấp vào nút dừng.


cảm ơn. Tôi chỉ hiểu hướng dẫn của bạn sau khi đọc @ varun's. +1
Android Eve

@Android Eve, à, tôi rất vui vì nó đã giúp được. Xin lỗi, nó không đủ rõ ràng!
Chris Thompson

Vậy là được rồi. Tôi hoàn toàn mất phương hướng về phát triển Android, mặc dù (và có lẽ vì) nhiều năm phát triển trên nhiều nền tảng khác.
Android Eve

Vâng, đây là giải pháp dễ dàng nhất. (Trên thực tế, prob phải là câu trả lời được chấp nhận). Nút Dừng chỉ bị tắt khi một chuỗi được đánh dấu thay vì mục nhập [Ứng dụng Android] trên cùng.
Colin

7

Làm việc cho tôi.

Windows -> Góc nhìn mở -> Khác ... -> DDMS

  1. Trong giao diện Android, trên cửa sổ bên trái, bạn có thể thấy "Thiết bị". Sẽ có một danh sách các ứng dụng đang chạy ngay bây giờ (Trình giả lập hoặc thiết bị vật lý). Bấm vào ứng dụng bạn muốn đóng. Thông thường tên là tên của gói + tên của ứng dụng
  2. Bây giờ hãy nhấp vào biểu tượng của "Stop".

Để quay lại chế độ xem bình thường, bạn chỉ cần nhấn vào nút Java ở phía trên bên phải. Bạn cũng có thể làm điều đó bằng cách nhấn: Windows -> Góc nhìn mở -> Khác ... -> Java


2

câu trả lời này không liên quan đến Eclipse, nhưng vì câu hỏi này xuất hiện trong tìm kiếm của Google về việc dừng một chương trình Android đang chạy, tôi muốn đưa ra một phương pháp dòng lệnh. chạy adb shell, tìm PID của quá trình bạn muốn kết thúc ps, ví dụ: của tôi là:

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

vì vậy chỉ kill 2097và bạn sẽ thấy màn hình chính hiển thị trở lại.


Vi phạm vòng đời ứng dụng. Có thể gây ra sự cố với tài nguyên hệ thống không được giải phóng và buộc khởi động lại thiết bị để xóa.
Dominic Cerisano

0

Thêm điểm ngắt vào mã của bạn ở nơi bạn muốn dừng và sau đó chạy nó ở chế độ Gỡ lỗi bằng cách nhấn F11.


0

Android Zombies Hình 1 - Nhiều Zombie đã bị giết trong quá trình nghiên cứu Câu trả lời này

Không nên giết ứng dụng Android Quy trình Java VM ở cấp hệ điều hành. Thật không may, đây chính xác là những gì cửa sổ thiết bị nhật thực "dừng" làm, cũng như System.exit () và lệnh "giết" trình bao.

Điều này sẽ thay đổi các phương thức vòng đời ứng dụng thông thường như onStop (), onDestroy () và finalize ().

Nhiều ứng dụng yêu cầu các phương pháp này để thoát một cách dễ dàng (ví dụ: nếu chúng sử dụng các đối tượng hệ thống như Cảm biến, MediaPlayer, Bộ chỉnh âm, Trình hiển thị, v.v.).

Các đối tượng hệ thống này bám quanh cái chết của thây ma trên tài nguyên hệ thống nếu release () không được gọi rõ ràng trong các phương thức vòng đời này. Xem hình. 1 ở trên. Điều này có thể ngăn ứng dụng khởi động lại và thậm chí yêu cầu khởi động lại. Đó là khía cạnh vô phúc.

Giải pháp duy nhất là đảm bảo rằng bạn luôn thoát khỏi ứng dụng của mình một cách sạch sẽ bằng cách gọi onStop () hoặc onDestroy () hoặc ít nhất là finalize (). Trình gỡ lỗi thực hiện điều này, cũng như hệ điều hành khi tắt máy.

Bạn có thể đặt ứng dụng của mình để bẫy các sự kiện SIG_HUP để buộc thoát khỏi dòng lệnh.

Lần duy nhất bạn giết máy ảo ứng dụng là ở trạng thái ANR (đã là thây ma). ANR phải được sửa. Không bao giờ triển khai một ứng dụng có thể vào trạng thái này. Nó vô cùng thô lỗ.

Bạn có thể sử dụng Google Analytics và Cửa hàng Play để theo dõi những điều này trong quá trình triển khai. Bạn không muốn người dùng tức giận đưa ra đánh giá ANR một sao sau khi phải khởi động lại do ứng dụng zombie của bạn. Rất tệ.

Hãy nhớ rằng Android là Linux: hãy coi nó như một hệ điều hành thực sự và tôn trọng vòng đời của ứng dụng, nếu không, bạn chắc chắn sẽ phải đối mặt với Ngày tận thế thây ma đáng sợ.

Tái bút: Nếu bạn không thích sự tương tự về Zombie, vậy còn Fantasia thì sao?

nhập mô tả hình ảnh ở đây


0

Xem hình: 1. Nhấp vào DDMS; 2. Chọn ứng dụng hiện tại; 3. Nhấp vào "Dừng" nhập mô tả hình ảnh ở đây


Tôi làm điều này và ứng dụng ngừng gỡ lỗi. nhưng có trường hợp: 1- ngắt thiết bị khỏi usb, chạy app rồi khi app gặp lỗi nó đóng lại và sau đó mỗi lần chạy lại đưa ra biểu mẫu gỡ lỗi và đợi cáp usb kết nối hoặc bấm nút ngược. 2- thiết bị kết nối với usb và chạy ứng dụng (Ctrl + f11) sau đó ứng dụng tự động chạy dưới chế độ gỡ lỗi. Để giải quyết vấn đề này, tôi đã tạo một dự án mới và sao chép / dán từng tệp vào dự án mới, nhưng điều tương tự lại xảy ra. Bây giờ bất kỳ trợ giúp?
Ahmad Ebrahimi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.