为什么我的服务没有在Fragments onActivityResult中启动?
在用户登录后,在我的片段中调用onActivityResult回调函数。我有登录onActivityResult,它实际上被调用,但服务没有启动...该服务注册在清单中,它在我的onResume罚款执行。 getActivity也不返回NULL。我不知道这个问题是什么......任何人都可以提供一些建议。为什么我的服务没有在Fragments onActivityResult中启动?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_1:
if (resultCode == Activity.RESULT_OK) {
Intent intent = new Intent(getActivity(), MyService.class);
intent.setData(Uri.parse("http://www.google.com");
getActivity().startService(intent);
}
break;
default:
super.onActivityResult(requestCode, resultCode, data);
break;
}
}
很可能您没有在清单中为您的服务注册适当的标签。
要验证这一点,请查看startService
返回的ComponentName
对象。如果它为空,则没有服务符合您的意图。
如果有一个名为MyService的IntentService类,那么“no service is matching your itent”是什么意思? – Ewoks 2013-04-24 10:56:13
如果您的服务没有在AndroidManifest.xml中注册,那么Android将无法将您的意图与您的服务相匹配来启动它。当您按名称定位您的服务时(甚至是这样做),情况更是如此。 – 2013-04-24 14:20:14
我想你没有申报,你的活动名称在Android清单 在android系统menifest.xml文件中声明活动名称写下面的代码这样
<activity
android:name=".YourActivityName">
</activity>
我有类似的问题。
正如@Justin在回复我时指出的问题可以是正确注册清单文件中的服务。
如果您未注册应用程序将崩溃。除非您使用的是IntentService,这是默认情况下在另一个线程中,所以它不会崩溃您的应用程序,但服务本身将.. ..只是我们不能注意到它,导致主要活动的用户界面将保持..
最后我有清单中的错字宣告我的IntentService类。
希望有人会发现这个有用。
您需要更多的打印输出,将一个放在case后面,然后放在if后面。 – 2013-02-19 21:12:43
您的服务中是否有日志,以确认是否已启动? – 2013-02-19 21:19:47