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

这里的情况是:我有一个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

  • 在Android的IntentService中等待异步回调
  • 正确的方法来停止IntentService
  • 即使应用程序关闭,如何保持IntentService运行?
  • IntentService创build的通知总是使用错误的Intent
  • 从IntentService或AsyncTask进行REST API调用?
  • 防止Android“进程坏”错误
  • 在Android的IntentService中等待asynchronouscallback
  • 何时取消注册BroadcastReceiver? 在onPause(),onDestroy()或onStop()中?
  • 所以我的问题是如何获得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