Tôi nhận thấy một hành vi đáng ngạc nhiên khi xóa ứng dụng khỏi trình chuyển đổi ứng dụng bằng cách vuốt. Ứng dụng này có một dịch vụ. Khi ứng dụng bị "giết", mọi chủ đề bắt đầu từ dịch vụ tiếp tục chạy, các chủ đề khác sẽ bị chấm dứt.Điều gì chính xác xảy ra khi bạn xóa một nhiệm vụ khỏi các lần gần đây?
Điều thực sự đáng ngạc nhiên là hệ thống có thể xác định chủ đề đã bắt đầu từ dịch vụ, thậm chí nếu tôi cố gắng xáo trộn nguồn gốc của chủ đề như thế này:
- Trong onCreate của dịch vụ() phương pháp, viết Runnable đến trình xử lý chủ đề chính.
- Runnable bắt đầu một chuỗi mới tồn tại loại bỏ khỏi những lần gần đây.
Nếu tôi đăng chính xác cùng một trình điều khiển cho cùng một trình xử lý nhưng từ một hoạt động, luồng không tồn tại. Làm sao hệ thống có thể biết được? Liệu nó bằng cách nào đó theo dõi thread nào là runnable được đăng từ?
Edit: Theo yêu cầu, các phương thức onCreate() phương pháp:
@Override
public void onCreate() {
super.onCreate();
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
new Thread(){
@Override
public void run() {
while (true) {
System.out.println("hello from thread");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
}.start();
}
}, 1000);
}
Trên thực tế 'Service' trong chạy android trên' UI Thread' (trừ khi bạn sử dụng 'IntentService') –
và Trình xử lý Android chứa 'ThreadLocal' để kiểm tra Giao diện người dùng. –
Vui lòng đăng mã của bạn cho onCreate() nếu có thể. –