0

我正在实施一个SyncAdapter,我需要在一天内同步几次,但我还需要onPerformSync在午夜触发同步。

ContentResolver.setIsSyncable(account, URIBuilder.AUTHORITY, 1);

Bundle extras = new Bundle();
extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
extras.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false);
extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false);

ContentResolver.addPeriodicSync(account,
    URIBuilder.AUTHORITY,
    extras, 15000);

ContentResolver.setSyncAutomatically(account, URIBuilder.AUTHORITY, true);
ContentResolver.requestSync(account, URIBuilder.AUTHORITY, extras);
4

1 回答 1

1

是的你可以。通过使用GCM;一旦服务器数据更改,服务器将发送已更改内容的推送通知。或者你可以使用AlarmManager

    Intent intent = new Intent(context,
            MyBoradcastReciever.class);

    PendingIntent sender = PendingIntent.getBroadcast(context, uid, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager am = (AlarmManager) context
            .getSystemService(Activity.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, time, sender);

在广播接收器中

new BroadcastReceiver() {

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

        }
    };

 public static void TriggerRefresh() {
    Bundle b = new Bundle();
    // Disable sync backoff and ignore sync preferences. In other
    // words...perform sync NOW!
    b.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
    b.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
    ContentResolver.requestSync(LNTAccountService.GetAccount(), // Sync
                                                                // account
            CONTENT_AUTHORITY, // Content authority
            b); // Extras
}
于 2013-11-22T22:00:29.550 回答