我想为Android创建一个FTP客户端。为了避免主线程网络我正在考虑使用服务。但我很困惑。
如何在需要时让我的服务完成特定的工作。例如,当我按连接按钮时,服务应该连接到FTP服务器并列出文件。 现在我可以使用相同的服务来下载文件或上传文件。如果有可能,请引导我朝正确的方向前进。
如果没有,请建议我应该使用什么来实现这一点。使用服务进行各种操作
回答
首先您不会避免NetworkOnMainThreadException
,因为Service正在主线程中运行。其次Service
应该用于音乐播放等持久后台操作的情况。
您应该阅读约AsyncTask
s和Loader
s。它们被设计为在后台线程中执行操作。 我相信IntentService
也可以对你有用。它用于排列任务并在后台线程中执行它们。一次只能处理一个任务。
我想要相同的连接持续到用户单击断开连接或退出应用程序。由于我想给你的静态通知连接到服务器,我将不得不使用'Foreground Service'。但问题是,我将如何告诉服务要执行哪个动作 – Damandeep 2015-03-19 01:40:20
@Damandeep该服务应该特定于正在执行的操作。您应该创建一个“FTP客户端”服务,它将执行的唯一操作是FTP工作。你也可以使用服务绑定而不是前台任务。这个网站是编码建议的地方,如果你没有工作代码,我们可以做的不多。 – Noah 2015-03-19 19:24:10
您不必使用前台服务来发出通知。前台服务需要发出不能被用户删除的通知(它将持续到服务完成)。 – 2015-03-21 10:40:46
- 1. 访问各种Web服务使用Javascript
- 2. 各种阵列操作
- 3. 使用工作流或Windows服务进行同步。操作
- 4. 使用Java进行CRUD操作的通用Web服务
- 5. 作为WCF服务的信号器为各种客户服务
- 6. 使用服务进行数据操作角
- 7. 使用Volley库和服务进行长时间联网操作
- 8. 在WCF服务合同中使用soapAction =“”进行多项操作?
- 9. 使用WFS地理服务器进行CURD数据操作
- 10. 如何使用.Net数据服务和服务操作进行TDD
- 11. 多个Spinners进行各种JSON调用
- 12. 进行各种操作近似定时的“典型的台式PC”安诺2010
- 13. 是什么各种Web服务器
- 14. 各种即时信息服务
- 15. 有效的方法来执行各种字符串操作
- 16. REST:我使用哪种操作进行批处理?
- 17. 这种多任务操作
- 18. 在服务器上使用Photoshop操作
- 19. 拉,操作和使用web服务
- 20. 用户使用FOSUserBundle进行操作?
- 21. 如何在asp.net页面中使用服务器标签进行三元操作?
- 22. 在自定义服务器控件中使用DetailsView和EntityDataSource进行CRUD操作
- 23. 用于位图操作的各种颜色矩阵的集合
- 24. 用于各种操作的CPU周期大概
- 25. 如何使用Docker在一台服务器上的默认端口上运行各种Web服务器?
- 26. Silverlight域名服务 - 如何进行单个[Invoke]操作
- 27. 测试JSON Web服务在Internet Explorer上进行操作
- 28. 如何从另一台服务器进行POST操作 - Laravel
- 29. Android操作系统查杀服务,通知正在进行
- 30. 将DTO传递给服务层进行CRUD操作
听起来像一份工作... https://developer.android.com/reference/android/os/AsyncTask.html – Noah 2015-03-18 21:29:11
@sqrfv是正确的,异步任务是最好的方式去 – jb15613 2015-03-18 21:37:22
对于简单的连接使用的AsyncTask。如果您想在后台执行某些操作,以免用户看到进度(如接收邮件或邮件) - 请使用后台服务。 当你想在bg中做一些事情并让用户知道进度(如文件下载)时,使用前台服务。 – Mark 2015-03-18 21:48:27