2010-11-30 47 views
17

这些方法(类)之间有什么区别?Android Asynctask vs Runnable vs timertask vs服务

我想运行一个每5秒运行一次的应用程序,清除内存,并在CPU处于待机模式时运行该应用程序。这样的应用程序不绑定到wakelock。

问候,

沙夫卡特

+0

可能取决于它将要做什么。我假设你不希望UI每5秒弹出一次,所以你在后台运行它并每5秒处理一次? – CrackerJack9 2011-08-08 14:40:41

回答

31

前三之间的区别仅仅是已经为你做的工作量。并且Servicefundamental Android application component

AsyncTask为做一个新的线程一些工作便利类,并使用它从中称为完成时线程(通常是UI线程)的结果。它只是一个使用几个runnables的包装器,但它处理创建线程和处理线程间消息传递的所有复杂性。

Runnable接口是Java线程的核心。接口应该由其实例旨在由线程执行的任何类来实现。

TimerTask是标准Java的一部分,并且可以是使用用于延迟或重复执行一些片(可运行)的代码。它的用途是discouraged on Android。您可以改用Handler。

服务可以用作Android应用程序的独立且无UI的部分。它可以运行并创建它自己的线程,并且可以通过例如AlarmManager为UI或通过Intents启动。

它想你想要的是一个服务,它创建它自己的线程并做一些工作。当工作完成后,当垃圾收集器启动时,内存将在Android上释放,这是你无法控制的,这是一件好事。

AlarmManager允许您以指定的时间间隔广播Intents,甚至允许控制唤醒设备。您只需在您的服务中定义BroadcastReceiver并在清单中声明它。

您的问题的最后一部分我不太了解,所以请澄清一下您的努力要完成什么。

+0

我仍然没有得到一个服务是如何不同于一个Runnable ..?看来我可以使用runnable而不是Service。另外,Service中的哪些方法会被调用?例如像Runnable()中的run() – 2015-08-27 23:31:42