Xamarin中的BackgroundWorker与Android服务

克里斯0334

我正在研究在Visual Studio.Net上使用Mono的移动应用程序。

当前,我们有一个要从Windows CE转换为Android的应用程序。原始程序使用小的BackgroundWorkers来保持UI的响应性,并使用ProgressChanged事件对其进行更新。但是,我一直在阅读,在Android中有可以替换该功能的服务。

阅读有关服务的优缺点,我知道它们通常被使用,因为它们比线程具有更高的优先级,并且主要是,如果要在多个应用程序中使用该功能,则它们的优先级更高。

我发现比较线程和服务的更多信息表示服务可以更好地用于多个任务(例如下载多个文件),而线程可以更好地用于单个任务(例如上传单个文件)。我考虑此信息,因为BackgroundWorker使用线程。

我有什么想念的吗?基本上,一项服务应该用于较长的任务,因为操作系统赋予它更好的优先级(被杀死的风险较小),而Threads / BackgroundWorkers对于较短的任务则更好。还有其他优点/缺点可以使用其中一个吗?

先感谢您!

[编辑]如果您需要一个非常具体的问题...告诉我何时以及为什么使用服务而不是BackgroundWorker?那会很有用。

我必须在Android上重新创建一些功能:-GPS定位和指南针信息-大多数情况下,当某些事件正在起作用并在其运动轨迹中进行跟踪时,必须能够正常工作以获取设备的位置。-一个非常长的过程,甚至可能持续一个小时。

最后一个是我关注的那个。它必须非常可靠且负责任,既可以让用户了解正在执行的操作,又可以保持工作状态,即使用户转移到其他活动或功能(进行呼叫,按下主页按钮等)也是如此。

除此之外,我相信在WinCE上使用BackgroundWorker的其他功能不会对Android产生问题。

[Edit 2:20140225]但是,我想知道AsyncTask是否可以在下一个场景中为我提供帮助:-该应用程序可以在另一设备上读写信息。这些命令本质上是简短的,而且答案很快,因此对于单个命令来说没有问题。但是,有一个过程可能要花一个小时左右的时间,在此期间,它将询问设备的状态。你会怎么做?

卡布科

我认为您误会了ServiceAndroid的含义请参阅有关服务文档

服务是可以在后台执行长时间运行的操作且不提供用户界面的应用程序组件。另一个应用程序组件可以启动服务,即使用户切换到另一个应用程序,它也将继续在后台运行。

另请注意:

服务在其宿主进程的主线程中运行-该服务不会创建自己的线程,也不会在单独的进程中运行(除非另行指定)。

使用工作线程和使用aService并不互斥。

如果您希望将工作从主线程上移开,那么显然您需要使用另一个线程。通过TPLBackgroundWorkerTPL在许多情况下都可以,但是如果您想与UI交互(例如,在完成任务或更新UI中的进度时),Android的方法是使用AsyncTaskmono docs)。

如果这个工作需要继续与您的应用程序的用户交互之外,那么你可能想举办这项工作(包括BackgroundWorker/ Thread/AsyncTask在/等)Service如果您要进行的工作仅在用户直接与您的应用程序交互时才有意义,则aService是不必要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Xamarin.Forms 中实现 Android 服务

来自分类Dev

带有Backgroundworker的ASP.NET Web服务中的轮询服务未继续

来自分类Dev

从Xamarin Android应用程序中的Web服务器访问API

来自分类Dev

Xamarin Android中的BindableViewPager

来自分类Dev

BackgroundWorker中的TWAIN事件

来自分类Dev

Xamarin Android后台计时器服务

来自分类Dev

Xamarin Android后台计时器服务

来自分类Dev

如何从 Xamarin.Android 调用 Web 服务

来自分类Dev

Android服务中的SharedPreferences

来自分类Dev

Android服务中的BroadcastReceiver

来自分类Dev

Android服务中的onResume

来自分类Dev

在Android中启动服务

来自分类Dev

在Android中与服务聊天

来自分类Dev

Android中的通知服务

来自分类Dev

无法连接到Xamarin中的相机服务

来自分类Dev

Xamarin中缺少Azure移动服务InvokeApi

来自分类Dev

Xamarin 表单中的后台服务

来自分类Dev

Xamarin 应用程序 (Android) 无法从物理设备访问本地网络中的 mongodb 服务器

来自分类Dev

在Xamarin Android中删除ListView

来自分类Dev

Android WebView(Xamarin)中的VueJS

来自分类Dev

Xamarin表单-Android中的样式

来自分类Dev

ListView中的Android Xamarin按钮

来自分类Dev

Xamarin.Android中的HackyViewPager

来自分类Dev

EditText 中的 getValue - XAMARIN ANDROID

来自分类Dev

Android 中的 Xamarin 窗体框架

来自分类Dev

等待下载在BackgroundWorker中完成

来自分类Dev

如何填充backgroundworker中的ListBox?

来自分类Dev

等待下载在BackgroundWorker中完成

来自分类Dev

BackgroundWorker中的Process.GetProcessesByName