Tôi đang xử lý bất kỳ trường hợp ngoại lệ còn tự do xảy ra trong ứng dụng của tôi qua:Làm thế nào để tôi ngừng ứng dụng của tôi khỏi việc chuộc lại sau khi tôi xử lý một ngoại lệ không bị bắt?
Thread.setDefaultUncaughtExceptionHandler(this);
là đây là Hoạt động khởi chạy của tôi thực hiện UncaughtExceptionListener. Tôi xử lý các ngoại lệ và gửi nó đến máy chủ đăng nhập của tôi tốt, tuy nhiên, ứng dụng của tôi sau đó không kết thúc. Nó chỉ chạy như một zombie cho đến khi nút home hoặc back được nhấn. Làm thế nào tôi có thể giết quá trình sau khi xử lý ngoại lệ?
Sửa
Dưới đây là một thử nghiệm và hoạt động làm việc đó ném một ngoại lệ còn tự do mà là bị bắt (bởi Thread) và xử lý. Các bánh mì nướng không bao giờ được đăng và quá trình đi zombie một khi ngoại lệ được đăng nhập.
class TestActivity extends Activity implements UncaughtExceptionListener {
@Override public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Thread.setDefaultUncaughtExceptionHandler(this);
throw new RuntimeException("I'm a destuctive booger.");
setContentView(R.layout.activity_test);
}
@Override public void uncaughtException(Thread thread, Throwable toss) {
Log.e(TAG, "An uncaught exception has been recieved.", toss);
Toast.makeText(this, "Big Error", Toast.LENGTH_LONG).show();
}
}
Gọi 'kết thúc()' trong phương thức xử lý. Có thể bạn cũng muốn cung cấp hộp thoại bật lên để thông báo cho người dùng. – Squonk
@MisterSquonk, không thể, ngữ cảnh của tôi bị vô hiệu. Ban đầu tôi có nó nướng một thông báo lỗi quan trọng, nhưng bánh mì nướng sẽ không tạo ra. Sau đó tôi đã thử một máy thu phát sóng và điều đó cũng không hoạt động. – AedonEtLIRA
Xin lỗi, tôi không hiểu. Bạn nói rằng 'this' là launcher của bạn' Activity' vì vậy nếu phương thức handler là một phần của 'Activity', để xử lý nó, bạn phải có 'running'' Activity'. Thực tế là 'Activity' là một lớp con gián tiếp của' Context' có nghĩa là (trong thuật ngữ OOP) một 'Activity' là một' Context'. – Squonk