Ecco lo scenario: Ho un WakefulBroadcastReceiver che esegue un backup in un computer di rete o nel cloud. È impostato per andare nel mezzo della notte , quando so che il tablet avrà accesso alla LAN . Il backup memorizzerà i dati in una posizione e un file che è stato "prelevato" dal frammento che ha istanziato WakefulBroadcastReceiver, utilizzando Storage Access Framework. Quindi devo essere in grado di accedere al ContentResolver e per farlo ho bisogno del contesto.Come ottenere il contesto in un servizio Intent
Da tutta la mia lettura dei documenti, questo è ciò che il BroadcastReceiver è destinato ad essere utilizzato per - un compito potenzialmente lunga corsa che dovrebbe essere fatto in background quando non molto altro è accadendo. - Come un backup. Non ho visto nessun esempio che mette insieme .
Come si ottiene il contesto in IntentService? Qui è uno snippet del destinatario e del servizio di pianificazione.
public class BackupAlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, BackupSchedulingService.class);
startWakefulService(context, service);
}
}
public class BackupSchedulingService extends IntentService {
public BackupSchedulingService() {
super("BackupSchedulingService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
// How to get the context - it was a parameter when
// creating the new IntentService class above?
}
}
Il codice di esempio praticamente segue esattamente il riferimento manuale del codice Android qui:
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html
Qual è la differenza tra "getApplicationContext()" e "this"? – Zapnologica
funziona in "protected void onHandleIntent (Intent intent) {" ma non nel costruttore IntentService –
@Moises puoi spiegare perché? – SLearner