2012-07-02 35 views
8

Tôi tạo và chương trình android mà cần phải không ngừng tiếp tục gửi dữ liệu qua bluetooth bây giờ tôi sử dụng một cái gì đó như thế này:Làm thế nào để chạy một vòng lặp vô hạn trong Android mà không đóng băng giao diện người dùng?

for(;;) 
{ 
//send message 
} 

mặc dù công trình này nó đóng băng UI và ứng dụng của tôi làm thế nào tôi có thể thực hiện tương tự mà không đóng băng giao diện người dùng của tôi?

Tôi chắc chắn rằng ứng dụng đang gửi dữ liệu khi tôi theo dõi dữ liệu.

+3

sử dụng ['AsyncTask'] (http://www.google.com.pk/search?q=AsyncTask) –

+0

Bạn có thực sự có nội dung cần hiển thị trên màn hình không? Nếu không sử dụng Dịch vụ. Nếu vậy hãy sử dụng AsyncTask như @AdilSoomro nói. – FoamyGuy

+0

Một tài nguyên tốt (chưa kéo dài) khác sẽ là http://developer.android.com/guide/components/processes-and-threads.html – gobernador

Trả lời

1

Bạn cần di chuyển công việc vào một chuỗi khác (không phải là chuỗi giao diện người dùng), để ngăn chặn ANR.

new Thread(new Runnable(){ 
     @Override 
     public void run(){ 
      Looper.prepare(); 
      //do work here 
     } 
    }).start(); 

Trên đây là một phương pháp nhanh chóng và dơ bẩn, Các phương pháp ưa thích trong hầu hết các trường hợp đang sử dụng AsyncTask

7

Đặt vòng lặp của bạn trong một AsyncTask, Service với riêng Chủ đề hoặc chỉ trong Chủ đề khác bên cạnh hoạt động của bạn. Không bao giờ thực hiện công việc nặng nhọc, vòng lặp infinte hoặc chặn cuộc gọi trong Chủ đề chính (Giao diện người dùng) của bạn.

0

Bắt đầu một IntentService sẽ tạo chuỗi nền cho bạn chạy Dịch vụ của bạn. Gọi Looper.prepare() như @YellowJK đề xuất, nhưng sau đó gọi Looper.loop() khi bạn cần chương trình của bạn để chờ đợi thứ gì đó xảy ra để Dịch vụ không bị giết.

@Override 
protected void onHandleIntent(Intent arg0) { 
    Looper.prepare(); 
    //Do work here 
    //Once work is done and you are waiting for something such as a Broadcast Receiver or GPS Listenr call Looper.loop() so Service is not killed 
    Looper.loop(); 
} 
Các vấn đề liên quan