android - 是否可以在库 list 中定义服务而不在主机 list 中定义它?

标签 android

我有一个包含 Android Application 类子类的库。子类包含启动服务的方法(也包含在库项目中)。

当我在主机应用程序中包含该库时, Activity 管理器提示它无法启动服务 Intent (未找到)。

代码结构为:

库 list :

<service name="com.my.project.MyService" />

库中的应用程序子类:

Intent intent = new Intent(this, MyService.class);
startService(intent);

我可以通过在主机应用程序 list 中再次定义服务来解决这个问题;但是,我不想将此要求强加给使用该库的开发人员。

我的问题是,我能否避免在主机 list 中引用库服务的要求?

最佳答案

值得一提的是,虽然它不会影响您当前的实现(如果我没看错的话),但应该注意将哪个 Context 传递给 Intent 构造函数。

例如,如果您决定将您的Service 移动到单独的 APK,则该服务将不会在客户端应用程序 Context 中找到。

然后您可以使用替代的 Intent 构造函数:

Intent intent = new Intent("com.my.service.project", "com.my.service.project.MyService");

或者将 BroadcastReceiver 添加到 com.my.service.project 项目,然后由 sendBroadcast 从客户端应用程序触发startService 的。

关于android - 是否可以在库 list 中定义服务而不在主机 list 中定义它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10498373/

相关文章:

android - IntentService、服务或 AsyncTask

java - 如何使用HttpClient下载连续数据流?

android - 矢量图像的颜色选择器不起作用

javascript - 图像渲染问题 React Native

android - 在Android的kotlin类中遇到多个错误?

Android: phonegap/cordova: 应用运行时切换全屏模式

android - 使用对讲辅助功能模式在滑动时阅读 viewpager 中的 fragment 内容

javascript - Youtube Api playVideo 方法在某些移动设备上不起作用

android - 如何使用 Phonegap 重定向到 Android 或 iOS 中的 GPS 设置窗口以打开或关闭 GPS

c# - 循环到 ListView 元素