2015-03-18 93 views
0

我想为Android创建一个FTP客户端。为了避免主线程网络我正在考虑使用服务。但我很困惑。
如何在需要时让我的服务完成特定的工作。例如,当我按连接按钮时,服务应该连接到FTP服务器并列出文件。 现在我可以使用相同的服务来下载文件或上传文件。如果有可能,请引导我朝正确的方向前进。
如果没有,请建议我应该使用什么来实现这一点。使用服务进行各种操作

+0

听起来像一份工作... https://developer.android.com/reference/android/os/AsyncTask.html – Noah 2015-03-18 21:29:11

+0

@sqrfv是正确的,异步任务是最好的方式去 – jb15613 2015-03-18 21:37:22

+0

对于简单的连接使用的AsyncTask。如果您想在后台执行某些操作,以免用户看到进度(如接收邮件或邮件) - 请使用后台服务。 当你想在bg中做一些事情并让用户知道进度(如文件下载)时,使用前台服务。 – Mark 2015-03-18 21:48:27

回答

1

首先您不会避免NetworkOnMainThreadException,因为Service正在主线程中运行。其次Service应该用于音乐播放等持久后台操作的情况。

您应该阅读约AsyncTask s和Loader s。它们被设计为在后台线程中执行操作。 我相信IntentService也可以对你有用。它用于排列任务并在后台线程中执行它们。一次只能处理一个任务。

+0

我想要相同的连接持续到用户单击断开连接或退出应用程序。由于我想给你的静态通知连接到服务器,我将不得不使用'Foreground Service'。但问题是,我将如何告诉服务要执行哪个动作 – Damandeep 2015-03-19 01:40:20

+0

@Damandeep该服务应该特定于正在执行的操作。您应该创建一个“FTP客户端”服务,它将执行的唯一操作是FTP工作。你也可以使用服务绑定而不是前台任务。这个网站是编码建议的地方,如果你没有工作代码,我们可以做的不多。 – Noah 2015-03-19 19:24:10

+0

您不必使用前台服务来发出通知。前台服务需要发出不能被用户删除的通知(它将持续到服务完成)。 – 2015-03-21 10:40:46