我正在编写两个应用程序一起协作一个收集数据(使用服务),另一个是自定义键盘从服务获取数据并将它们写入任何文本字段选择。所有这一切都工作正常我唯一的问题是服务绑定;现在服务将在任何应用程序调用绑定时启动。这不是我想要的行为;数据收集应用程序应该是唯一通过活动开始/停止服务的应用程序,键盘只会在服务正在运行时绑定。我需要做的是在调用绑定之前检查服务是否正在运行。无论如何,我有从键盘应用程序检查状态吗?是否有某种锁定来指示服务的存在?我现在发现的所有方法都需要从服务启动的地方获取类名和上下文,这对我来说不起作用。Android检查服务是否从另一个应用程序运行
0
A
回答
1
基本上以三种可能性结束希望这有助于未来的其他人。
方法1:(我去与事件虽然方法2是更好)
public static boolean isServiceRunning(Context queryingContext) {
try {
ActivityManager manager = (ActivityManager) queryingContext.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.myservice".equals(service.service.getClassName()))
return true;
}
} catch (Exception ex) {
Toast.makeText(queryingContext, "Error checking service status", Toast.LENGTH_SHORT).show();
}
return false;
}
方法2:
像pskink以上建议使用bindService
与标志0只与问题这是该方法将永远返回真实无论它是否连接或不,你必须找到另一种方式来知道发生了什么(如果失败,你将不会收到服务手柄)
方法3:
通过yosriz使用SharedPreference
建议停止状态标志,其他应用程序将检查并知道服务的状态。
0
无法检查服务是否已经启动,Android服务旨在处理多个客户端,并且绑定方法会在未运行时创建服务。
因此,您可以显式启动它或使用bind()创建绑定服务连接,如果不存在,则会创建新连接。不过,您可以通过多种方式实现此功能,例如,在某些共享首选项中保存服务“正在运行”状态,并在绑定到服务之前检查此pref。 (SharedPreference可以在同一用户ID的2个进程之间共享)
相关问题
- 1. Tizen本地服务应用检查另一个应用程序正在运行
- 2. 检查应用程序是否从后台任务运行
- 3. 检查应用程序是否在服务器上运行或本地运行
- 4. Android检查在应用程序中运行服务
- 5. Java - 检查是否有另一个Java应用程序正在运行
- 6. android:如何检查应用程序是否在后台运行
- 7. 检查我的应用程序是否在Android中运行
- 8. C程序 - 如何检查Web服务是否正在运行
- 9. 检查服务是否正在运行?
- 10. Android在任务锁定时运行另一个应用程序
- 11. 如何检查是否另一个应用程序最小化?
- 12. 如何从另一个服务中杀死Android应用程序和所有正在运行的服务/任务?
- 13. 检查某个特定应用程序是否在运行iOS?
- 14. 从另一个Windows运行时应用程序检索数据
- 15. 检测Facebook应用程序是否从fanpage(服务器端)运行
- 16. httpserver是否应该作为Android服务或Android应用程序运行?
- 17. 检查一个Windows服务是否正在运行?
- 18. 程序如何判断另一个进程是否作为服务运行?
- 19. 是否有可能找出另一个应用程序运行了多久? Android
- 20. 是否有可能从android应用程序运行android应用程序?
- 21. Android:检查SMTP服务器是否正常运行
- 22. 检查程序是否正在运行
- 23. 从另一个程序集运行WPF应用程序
- 24. 如何检查应用程序是否正在运行,否则运行它?
- 25. android如何检测应用程序是否在过去运行
- 26. 如何检查一个进程是否作为Windows服务运行
- 27. 检查SQL服务器服务是否正在运行
- 28. 检查应用程序是否正在运行
- 29. 如何检查SWF是否作为AIR应用程序运行?
- 30. 检查应用程序是否已经运行
它是2个独立的应用程序?不同的流程? – yosriz
@yosriz是的,一个是键盘,另一个是服务+控制视图。 – TheBrash
只需调用带有0个标志(最后一个参数)的'bindService',如果服务已经启动,你就会绑定到它,如果它没有启动,绑定将不会发生 – pskink