Det svåra men korrekta sättet att göra detta är att bygga din egen anpassade ContentProvider
för din app och uppdatera all data som tas emot från webbtjänster och push-meddelanden till denna ContentProvider
. När Activity
kommer tillbaka i förgrunden, uppdaterar den sig själv med den nya data som tillhandahålls av ContentProvider
.
Det är svårt för att skapa en anpassad ContentProvider
är mycket arbete. Det är rätt sätt eftersom det är i överensstämmelse med beteendet hos mobilapplikationer och med Android-arkitekturen:säg att en användare aktiverar en webbtjänst eller någon beräkningskrävande uppgift och sedan avvisar appen; eller säg att ett pushmeddelande kommer och kräver att appens data uppdateras och visas. I båda fallen appens Activity
s kanske inte längre är i förgrunden, utan en Service
kan användas för att utföra vissa icke-UI-operationer. Nu i slutet av den operationen, Service
gör ändringar i data via ContentProvider
, och när användaren aktiverar appen igen visas Activity
s får sina nya data från ContentProvider
.
För att citera den officiella handledningen:
Innehållsleverantörer är standardgränssnittet som kopplar samman data i en process med kod som körs i en annan process.
Som utvecklare bör du alltid utgå från att användaren kan anropa en app när som helst och avvisa den när som helst. Oavsett om en Activity
är i förgrunden eller inte, appens data måste uppdateras och underhållas korrekt.
Googles egna appar använder anpassad ContentProvider
s. Gmail
app använder i synnerhet sin ContentProvider
för att få nya e-postmeddelanden när nätverksanslutning är tillgänglig och visa e-postmeddelanden offline. Facebook
, WhatsApp
&Twitter
Android-appar använder också ContentProvider
s.