我想为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. 使用工作流或Windows服务进行同步。操作
- 2. 使用Java进行CRUD操作的通用Web服务
- 3. 作为WCF服务的信号器为各种客户服务
- 4. 使用服务进行数据操作角
- 5. 在WCF服务合同中使用soapAction =“”进行多项操作?
- 6. 使用WFS地理服务器进行CURD数据操作
- 7. 如何使用.Net数据服务和服务操作进行TDD
- 8. 进行各种操作近似定时的“典型的台式PC”安诺2010
- 9. 各种即时信息服务
- 10. 这种多任务操作
- 11. 拉,操作和使用web服务
- 12. 在自定义服务器控件中使用DetailsView和EntityDataSource进行CRUD操作
- 13. 用于位图操作的各种颜色矩阵的集合
- 14. 用于各种操作的CPU周期大概
- 15. 如何使用Docker在一台服务器上的默认端口上运行各种Web服务器?
- 16. Silverlight域名服务 - 如何进行单个[Invoke]操作
- 17. Android操作系统查杀服务,通知正在进行
- 18. 如何从另一台服务器进行POST操作 - Laravel
- 19. 将DTO传递给服务层进行CRUD操作
- 20. 使用Symfony3和FOSRestBundle进行PATCH操作
- 21. 使用isdigit进行浮动操作?
- 22. 使用AsyncTask进行多个操作
- 23. 使用python进行数据框操作
- 24. 如何使用流进行lambda操作?
- 25. 如何使用htacess进行此操作?
- 26. 使用JQuery进行窗口操作?
- 27. 使用getElementByName进行只读操作吗?
- 28. 使用jQuery进行HTML表格操作
- 29. 如何使用DexieJS进行UNION操作?
- 30. 使用Rally Rest API进行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