2013-05-31 30 views
5

Tôi có một tiện ích với việc triển khai nút đơn giản, bất cứ khi nào chúng ta nhấp vào nút, nó sẽ lật qua một bộ hình ảnh nhất định. Bây giờ nếu tôi muốn lật nó sau mỗi 5 giây mà không bấm nút, tôi có thể tiếp tục như thế nào?Cách cập nhật tiện ích theo định kỳ, cứ sau 5 giây

+0

Tôi có cần dịch vụ cho nó không? – Atihska

Trả lời

2
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() { 
    public void run() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       imageView.setImageBitmap(bitmap); 
      } 
     }); 
    } 
}, 5000, 5000); 

Thay đổi đầu tiên sẽ xảy ra sau 5 giây.

+1

Tôi nên đặt mã này ở đâu trong lớp Nhà cung cấp hoặc Dịch vụ của tiện ích con android? – Atihska

5

Trước tiên, tôi thực sự khuyên bạn không nên cập nhật tiện ích con sau mỗi 5 giây. Nó sẽ giết pin của bạn trong thời gian không.

Bạn có thể sử dụng thuộc tính android:updatePeriodMillis trong nhà cung cấp appwidget.
Hãy xem Adding the AppWidgetProviderInfo Metadata trên trang web dành cho nhà phát triển Android.
Điều này là để bảo toàn pin, bạn không thể đặt thời gian dưới 30 phút (1800000ms).

Sau khi thiết lập thời gian cập nhật bạn muốn, bạn chỉ cần xác định hành vi trong phương thức onReceive() của AppWidgetProvider của bạn. Để làm điều này, bạn phải bắt sự kiện ACTION_APPWIDGET_UPDATE.

@Override 
public void onReceive(Context context, Intent intent) { 

    final String action = intent.getAction(); 

    if (ACTION_APPWIDGET_UPDATE.equals(action)) { 
     // Update your widget here. 
    } 
} 

Nếu bạn thực sự muốn thực hiện một nhiệm vụ mỗi 5 giây, bạn có thể sử dụng TimerTimerTask lớp:

final Handler handler = new Handler(); 
Timer timer = new Timer(); 

TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     handler.post(new Runnable() { 
      public void run() { 
       // send a broadcast to the widget. 
      } 
     }); 
    } 
}; 
timer.scheduleAtFixedRate(task, 0, 5000); // Executes the task every 5 seconds. 
4

Sử dụng AlarmManager để tirgger tắt báo động rằng sẽ gửi một Cập nhật ý định để nhận của bạn .

Đây là liên kết tốt cung cấp ví dụ.

http://www.parallelrealities.co.uk/2011/09/using-alarmmanager-for-updating-android.html

  1. Khi tiện ích được kích hoạt, trong dịch vụ tiện ích, thiết lập báo động tiếp theo sau 5 giây.
  2. Báo thức sẽ gửi một PendingIntent, sẽ kích hoạt dịch vụ của bạn sau 5 giây.
  3. Trong dịch vụ onStartCommand của dịch vụ, hãy kích hoạt dịch vụ cập nhật tiện ích.
  4. Và thiết lập báo thức tiếp theo sau 5 giây một lần nữa.

Lưu ý: Nhưng, 5 giây, thực sự quá nhanh. Nó sẽ tiêu hao pin của bạn đủ sớm, tùy thuộc vào những gì khác bạn có thể đang làm trong nền. Đừng nghĩ đến việc cập nhật thường xuyên hơn.

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