Ứng dụng của tôi có tiện ích hiển thị ngày hôm nay và cần được cập nhật vào nửa đêm. Các widget được định nghĩa trong biểu hiện nhưCách cập nhật tiện ích ứng dụng vào nửa đêm?
<manifest>
...
<application>
...
<receiver
android:name=".MyWidgetProviderClass"
android:label="MyLabel" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_icon_info" />
</receiver>
</application>
</manifest>
Và file info widget là
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/my_layout"
android:minHeight="40dp"
android:minWidth="294dp"
android:updatePeriodMillis="3600000" >
</appwidget-provider>
Điều này làm cho phụ tùng để được cập nhật bất cứ lúc nào giữa nửa đêm và 1:00 nhưng tôi muốn để có được cập nhật gần gũi hơn với nửa đêm vì vậy tôi thêm vào ứng dụng một máy thu ý định
<receiver
android:name=".MyWidgetUpdaterClass"
android:enabled="true" >
<intent-filter>
<action android:name="MyAction" />
</intent-filter>
</receiver>
và một phương pháp tĩnh
public static void setMidngintAlarms(Context context) {
Intent intent = new Intent("MyAction");
PendingIntent pendingIntent =
PendingIntent.getBroadcast(context, 0, intent, 0);
long interval = 24*60*60*1000;
long firstTime = SystemClock.elapsedRealtime() +
millisecondsToNextMidnight();
AlarmManager am = (AlarmManager)context.getSystemService(
Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, interval, pendingIntent);
}
(do yêu cầu của người quản lý báo động với cùng một ý định ghi đè lên nhau không có hại trong bộ gọi điện thoạiMidngintAlarms nhiều lần).
Tôi đã thử gọi setMidnightAlarms() từ vài địa điểm (từ hoạt động chính của ứng dụng, từ onUpdate của AppWidgetProvider(), v.v.). Tất cả mọi thứ hoạt động tốt và ý định quản lý báo động được nhận và widget được cập nhật nhưng chỉ miễn là ứng dụng chạy. Nếu tôi giết ứng dụng, các tiện ích sẽ ngừng cập nhật vào nửa đêm.
Bất kỳ ý tưởng nào làm cho các tiện ích cập nhật vào nửa đêm? Tôi có cần thêm dịch vụ không? Nếu thế thì sao? Ví dụ nào?
Tôi hơi ngạc nhiên một chút về tầm quan trọng của việc sử dụng chức năng cơ bản này.
Tiện ích vẫn nên cập nhật vì bạn đang đặt báo thức cho nó. Vì vậy, nó không quan trọng cho dù các ứng dụng đang chạy hay không. Nó hoạt động nếu thiết bị khởi động lại và bạn không đăng ký báo thức ngay từ đầu. –
Khi báo thức lặp lại được đặt và không bao giờ bị hủy một cách rõ ràng. Trong điều kiện nào hệ thống android hủy bỏ nó, nếu có? Tôi không thể tìm thấy thông tin có liên quan. Ví dụ, nó có liên quan đến hoạt động hoặc dịch vụ đã gửi hay nó tồn tại mãi mãi độc lập? – user1076637