Using ContentObserver for sync adapters does not sound like a good idea.
 There are several reasons for that:

1. Data change notifications are not delivered to processes that are not
running. So if your sync adapter is not running for one reason or another
(and the system kills processes when it needs resources), then you won't get
a notification.
2. ContactsProvider sends only general "whole adapter" notifications,
meaning that when any data element in the database changes it sends a
notification to all observers regardless of what URIs they registered for.
 For example, somebody's presence in Talk changes - you will get a
notification.  Most of these notifications will have nothing to do with the
changes you need to sync, but there is no way for the adapter to tell.
3. Having the sync adapter running at all times is a major waste of
resources.

Fortunately, the sync framework is designed to overcome all these issues.
 SyncManager manages sync adapters, calls them at the best time from the
system's perspective, throttles their activities etc.  Sync adapters
themselves rely on RawContact.DIRTY flag and the
ContactsContract.CALLER_IS_SYNCADAPTER parameter to find and process
incremental changes.

There are examples of how that's done.  The most comprehensive example is
probably the Exchange (IAS) sync adapter that you can find here:

http://android.git.kernel.org/?p=platform/packages/apps/Email.git;a=tree;f=src/com/android/exchange

Cheers,

On Fri, Jan 21, 2011 at 11:57 PM, himanshu jain <himanshu....@gmail.com>wrote:

> Hi Dmitri  ,@LordAli3n
> I have couple of questions please spare some time or guide me
> direction
> 1) Can we use syncAdapter to get data of a row of raw_contact table if
> that row has been affected (i.e added/deleted/edited). I know
> ContentObserver notify whenever raw_content table changes in
> onChange() method but we dont know which row has been changed ( to put
> this in another way if we add how would we know and if deleted we
> still get it through deleted flag in raw_contact table but how about
> edited one??).
> 2) when we get notification in ContentObserver can we fire requestSync
> (Account account, String authority, Bundle extras) to start Sync ??
> how we can get data of raw_contact affected by contact application
> using these to parameters .
> 3) Is sync started by ContentProvider API ?? whenever change to it
> happens ??. How?? does it pass any useful uri or data that has been
> changed in raw_contacts??.
> 4) How do we come to know if in the process of  syncing something went
> wrong?? does it started again automatically??.
>
> thanks any help appreciated !!
>
> On Jan 19, 7:31 am, BoD <bodl...@gmail.com> wrote:
> > If I may intervene.
> > It seems to me that the OP wants to synchronize contacts using the
> > sync adapters APIs, and therefore wants to have his own account type,
> > and raw contacts in this account.
> >
> > But that means that when the user first starts using this app, this
> > account will be empty, and will synchronize... nothing.
> > Instead, they probably expect to synchronize the contacts already on
> > their phones (in the "local" account, or, more probably, in the gmail
> > account).
> >
> > --
> > BoD
> >
> > On Jan 19, 9:02 am, Dmitri Plotnikov <dplotni...@google.com> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > I am sorry. I guess I just don't understand the requirements.  I
> thought you
> > > were writing a sync adapter.  Sync adapters all deal with their own
> > > accounts.  Google sync adapter deals with google accounts, exchange
> adapter
> > > with exchange accounts and so on.  If you are thinking of writing a
> sync
> > > adapter that would handle data already handled by some other sync
> adapter,
> > > it is probably a bad idea. The framework is not designed to have
> multiple
> > > sync adapters handling the same data: only one syncadapter can take
> > > advantage of data versioning. This why I suggested that if you are
> writing a
> > > sync adapter, you should introduce a new account type. This is how they
> are
> > > supposed to work by design.
> >
> > > Cheers,
> > > Dmitri
> > > On Jan 18, 2011 5:43 PM, "L0rdAli3n" <42.john.doe.1...@googlemail.com>
> > > wrote:
> >
> > > > Thanks for your answer Dmitri!
> >
> > > > Could you explain in few words, how I can use the contacts the user
> > > > stored on his phone,
> > > > which in fact all have already an account_type, by introducing my own
> > > > accout_type?
> >
> > > > On 14 Jan., 16:26, Dmitri Plotnikov <dplotni...@google.com> wrote:
> > > >> I don't fully understand your requirements, but it shouldn't matter
> what
> > > >> _other_ data is in the contacts DB.  A sync adapter should only deal
> with
> > > >> its own data. Why not introduce a new account type for this purpose?
> >
> > > >> Cheers,
> > > >> Dmitri
> > > >> On Jan 14, 2011 5:16 AM, "L0rdAli3n" <
> 42.john.doe.1...@googlemail.com>
> > > >> wrote:
> >
> > > >> > Hey,
> >
> > > >> > I'm totally stuck with the ContactsContract-API. Point is that I
> want
> > > >> > only mess around with the Contacts saved in the "local" phonebook.
> But
> > > >> > it seems that every vendor but its own account_type for those
> > > >> > contacts.
> > > >> > And its even worse. The AccountManager isn't even aware of all
> > > >> > account_types?!?
> > > >> > For example on my HTC Desire with HTC Sense, the account_type all
> > > >> > local contacts are saved in is: com.htc.android.pcsc. But when I
> grab
> > > >> > a list of all available accounts from the AccountManager: This
> account
> > > >> > is not in the list!?
> > > >> > I also tested it on a Samsung Galaxy. Same here: The
> AccountManager is
> > > >> > not aware of the account_type used for local phonebookcontacts.
> >
> > > >> > The whole story is that I wan't to write a app to sync my locale
> > > >> > phonebook with OpenXchange.
> >
> > > >> > I guess I got that whole new ContactsContract-API wrong, but I
> don't
> > > >> > see any other way, then using RawContacts. Due to that I have to
> care
> > > >> > about the account_type, which is in fact a total mess.
> >
> > > >> > Hopefully someone can point me in the right direction. Every hint
> is
> > > >> > highly appreciated.
> >
> > > >> > --
> > > >> > You received this message because you are subscribed to the Google
> > > >> > Groups "Android Developers" group.
> > > >> > To post to this group, send email to
> >
> > > android-developers@googlegroups.com>> > To unsubscribe from this
> group, send email to
> > > >> > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@googlegroups.com>
> >
> > > <android-developers%2bunsubscr...@googlegroups.com<android-developers%252bunsubscr...@googlegroups.com><android-developers%252Bu
> nsubscr...@googlegroups.com>
> >
> > > >> > For more options, visit this group at
> > > >> >http://groups.google.com/group/android-developers?hl=en
> >
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Android Developers" group.
> > > > To post to this group, send email to
> android-developers@googlegroups.com
> > > > To unsubscribe from this group, send email to
> > > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com><android-developers%2Bunsubs
> cr...@googlegroups.com>
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to