2010-08-31 20 views
5

Tôi đang làm việc trên ứng dụng nơi tôi nhận dữ liệu từ máy chủ bằng cách sử dụng cuộc gọi còn lại và thêm dữ liệu đó vào chế độ xem. Tôi nhận được tất cả các dữ liệu ban đầu một cách chính xác. Tôi sử dụng AsyncTask để thực hiện nó.Lấy dữ liệu định kỳ (bỏ phiếu) từ máy chủ trong Android

Bây giờ tôi muốn định kỳ (nói 2 phút) tìm nạp dữ liệu mới từ máy chủ và thêm dữ liệu đó vào chế độ xem.Kiểm tra tìm nạp dữ liệu tự động (bỏ phiếu) từ máy chủ trong Android.

+1

xem http://developer.android.com/reference/java/util/TimerTask.html –

Trả lời

1

Cách tốt nhất để làm điều đó là tạo một dịch vụ tìm nạp dữ liệu từ máy chủ. Sau đó nếu hoạt động của bạn đang chạy, dịch vụ có thể gửi ý định đến hoạt động với dữ liệu đã tìm nạp.

Hoặc, để dịch vụ chạy khi ứng dụng của bạn chạy và yêu cầu hoạt động của bạn liên kết với dịch vụ khi khởi động. Sau đó sử dụng AIDL hoặc một cái gì đó tương tự để giao tiếp với dịch vụ.
(Ví dụ: mỗi khi dịch vụ tìm nạp dữ liệu, nó có thể kích hoạt chức năng gọi lại trong hoạt động của bạn)

3

Bạn có thể kiểm tra lớp AlarmManager để thực hiện.

Intent intent = new Intent(this, MyAlarmManager.class); 

long scTime = 60*2000;//2mins 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + scTime, pendingIntent); 

đây là báo động Manager--

public class MyAlarmManager extends BroadcastReceiver { 

    Context _context; 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      _context= context; 
      //connect to server.. 

     } 
} 

khi đã bao giờ các AlarmManager được 'sa thải' kết nối đến máy chủ một lần nữa và cư dữ liệu bạn vừa nhận được.

http://developer.android.com/reference/android/app/AlarmManager.html

+0

Xin chào Umesh, Đã thử giải pháp của bạn . Tôi đang sử dụng AlarmManager như lớp bên trong mà lần lượt các cuộc gọi async cập nhật GUI của tôi. Nhưng tôi nhận được lỗi này: "Không thể khởi tạo bộ thu". Tôi đã thêm tệp này vào tệp AndroidManifest.xml: Có vấn đề gì không? –

+0

như bạn có thể thấy AlarmManager là một lớp công khai mở rộng một BroadcastReciever và cần phải được viết trong một tệp khác. (Trong trường hợp trên tên của tập tin sẽ MyAlarmManager.java) Trong file manifest: \t \t \t \t \t giữ nó làm lớp bên trong có thể là vấn đề ở đây. – Umesh

1

làm theo các hướng dẫn nêu here. Đây chính là điều bạn muốn làm. Cũng vì các cuộc gọi máy chủ được thực hiện sau mỗi vài phút, nó tiêu thụ pin. Vì vậy, bạn chỉ có thể thử cho các cuộc gọi máy chủ khi dữ liệu máy chủ thay đổi thông qua thông báo Đẩy ..

Các vấn đề liên quan