Android:在片段中启动intent服务

Android:在片段中启动intent服务,android,android-fragments,intentservice,Android,Android Fragments,Intentservice,我在一个活动中有多个片段。每个片段都必须显示一些使用REST从服务器获取的数据。我一直在为REST请求使用相应的接收器来实现IntentService。现在,我可以通过在活动中将片段作为内部类来实现这一点 我对内部类的问题是,在方向改变时,抛出一个错误,如“无法实例化片段,没有空构造函数”。对于这个问题,我在搜索中找到了这样的答案:要么使内部类成为静态的,要么为Fragment创建一个独立的公共类。我仍然不明白为什么在方向改变时会发生这种情况 现在,如果我采取为Fragment创建一个单独的独立

我在一个活动中有多个片段。每个片段都必须显示一些使用REST从服务器获取的数据。我一直在为REST请求使用相应的接收器来实现
IntentService
。现在,我可以通过在活动中将片段作为内部类来实现这一点

我对内部类的问题是,在方向改变时,抛出一个错误,如“无法实例化片段,没有空构造函数”。对于这个问题,我在搜索中找到了这样的答案:要么使内部类成为静态的,要么为Fragment创建一个独立的公共类。我仍然不明白为什么在方向改变时会发生这种情况

现在,如果我采取为Fragment创建一个单独的独立类的方法,我必须传递activity对象来执行
startService
registerReceiver
。我不想为此使用
AsyncTask
,因为在我的应用程序中,我在一个片段中执行多个REST请求,
IntentService
允许在每个请求之后发送广播,这样我就不必等到所有请求完成后才开始加载屏幕。我觉得把activity对象传递给片段是不合适的。片段是否应该与活动尽可能松散地耦合,以便在多个活动中使用相同的片段?如果是,解决此问题的最佳方法是什么?

fragment.getActivity()持有托管该片段的Activity的实例,因此您不应该传递它。另外,startService和registerReceiver来自抽象接口上下文。你没有把它们耦合起来。