如何在意向服务中获取上下文

这里的情况是:我有一个WakefulBroadcastReceiver,可以对networking计算机或云进行备份。 当我知道平板电脑可以访问局域网时,它将在半夜中熄灭。 备份将数据存储到由实例化WakefulBroadcastReceiver的片段“拾取”的位置和文件,使用存储访问框架。 所以我需要能够访问ContentResolver并做到这一点,我需要的上下文。

从我所有的文件阅读中,这都是BroadcastReceiver的意义所在 – 这是一个潜在的长时间运行的任务,在没有其他事情发生的时候,应该在后台完成。 – 像备份一样。 我只是没有看到任何把所有东西放在一起的例子。

如何获取IntentService中的上下文? 这是接收者和调度服务的一个片段。

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? } } 

示例代码几乎完全遵循Android参考手册代码:

https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

Solutions Collecting From Web of "如何在意向服务中获取上下文"

所以我的问题是如何获得IntentService中的上下文?

IntentService Context ,因为IntentServiceContextinheritance而来。

只要调用getApplicationContext()

你可以在onStartCommand()函数中获取上下文。

  public class ExampleService extends IntentService { private Context mContext; public ExampleService(String name) { super(name); } @Override protected void onHandleIntent(Intent intent) { } @Override public int onStartCommand(Intent intent, int flags, int startId) { mContext = getApplicationContext(); return super.onStartCommand(intent, flags, startId); } } 

使用BackupSchedulingService.this (ServiceName.this)来获取上下文

原因 :服务扩展了ContextWrapper
ContextWrapper扩展了Context