Tôi sử dụng BroadcastReceiver với hành động TIMEZONE_CHANGED để đặt lại báo thức bằng AlarmManager để đảm bảo rằng báo thức chạy chính xác vào thời gian đã đặt, không sớm hơn vài giờ, tùy thuộc vào múi giờ thay đổi .TIMEZONE_CHANGED ý định được nhận vài giây
Tuy nhiên, trong nhật ký mới nhất do người dùng gửi, tôi đã thấy thông tin về mục đích với mỗi hành động TIMEZONE_CHANGED được nhận mỗi vài giây với người dùng phàn nàn về ứng dụng đang bị trục trặc.
Đây là mã onReceive BroadcastReceiver tôi
@Override
public void onReceive(Context context, Intent intent) {
Utils.log("OnTimeChange");
String action = intent.getAction();
if (action.equals(Intent.ACTION_TIME_CHANGED)) {
Utils.log("TimeChange");
} else if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
Utils.log("TimeZoneChanged");
}
BroadcastsManager.updateBroadcastsFromAlarms(context,
AlarmsDbAdapter.getInstance(context));
}
lọc ý định của manifest:
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
Và một phần của log (nó đi như thế trong hơn một giờ - chiều dài đầy đủ của log)
1. 19/4 7:41:54 - posting alarm 3 for 8:15 (in 0h)
2. 19/4 7:44:29 - OnTimeChange
3. 19/4 7:44:29 - TimeZoneChanged
4. 19/4 7:44:29 - posting alarm 3 for 8:15 (in 0h)
5. 19/4 7:44:54 - OnTimeChange
6. 19/4 7:44:54 - TimeChange
7. 19/4 7:44:54 - posting alarm 3 for 8:15 (in 0h)
Đó là Samsung Galaxy S III (Android v 4.1.2). Điều kỳ lạ là, điều đó không xảy ra trên S III của tôi. Có thể nào người dùng đã bật tùy chọn "thay đổi múi giờ tự động theo nhà cung cấp" trên thiết bị của anh ấy và thông tin như vậy được gửi cứ sau vài giây?
Có ai expierienced nó? Tôi đoán tôi sẽ chỉ cần thêm một tùy chọn để kiểm tra xem múi giờ đã thực sự thay đổi trước khi cập nhật chương trình phát sóng, nhưng nó vẫn là nhận được người nhận gọi mỗi vài giây ...
Bạn đã thử bật thay đổi thời gian tự động trên SIII của mình và xem liệu điều tương tự có xảy ra không? – romo
@romo Có - Tôi đã không viết nó trong câu hỏi, nhưng tôi đã kiểm tra nó trên S III của tôi cả với tùy chọn này được kích hoạt và vô hiệu hóa. – Koger
Đây là một câu hỏi cũ, nhưng chỉ để thêm một cái gì đó: Tôi nhận thấy điều này quá và có vẻ như với tôi nó xảy ra khi người dùng có thời gian tự động thay đổi trên + kết nối thấp. Tôi đoán khi liên tục chuyển đổi từ wi-fi, mạng và không có thời gian được thiết lập lại mỗi khi bạn nhận được một kết nối.Như bạn đã viết trong câu trả lời - sự chậm trễ chính đến từ việc tái tạo các đối tượng định dạng ngày tháng và các loại tương tự, vì vậy giải pháp hiển nhiên sẽ là so sánh các khu vực trước khi thực hiện bất kỳ điều gì. – vladimir123