Android中的Asynctask、Runnable、timertask和Service的区别

18

这些方法(类)有哪些区别?

我想运行一个每隔5秒运行一次的应用程序,在完成时清除内存,并在CPU处于待机模式时可以运行该应用程序。因此,该应用程序不会绑定到wakelock。

敬礼,

沙夫卡特


可能要看它将要做什么。我假设你不想让用户界面每5秒钟弹出一次,所以你可以在后台运行它,并每5秒钟处理一些东西? - CrackerJack9
1个回答

30

前三者之间的区别仅在于为您完成的工作量不同。而服务是一种基本Android应用程序组件

AsyncTask是一个方便的类,用于在新线程上执行一些工作,并在完成时在调用它的线程(通常是UI线程)上使用结果。它只是一个包装器,使用了一些可运行对象,但处理了创建线程和处理线程之间消息传递的所有复杂性。

Runnable接口是Java线程的核心。任何打算由线程执行其实例的类都应该实现Runnable接口。

TimerTask是标准Java的一部分,可用于延迟或重复执行某些(可运行)代码。在Android上,它的使用受到不鼓励。您可以使用Handler代替。

一个服务可以作为您的Android应用程序中独立和无UI的部分使用。它可以运行并创建自己的线程,并可以通过AlarmManager例如启动UI或使用意图。

我认为你想要的是一个创建自己的线程并执行一些工作的服务。当工作完成时,当垃圾收集器开始工作时,内存将在Android上被释放,这是您无法控制的事情,而这是一件好事。

AlarmManager允许您在指定的时间间隔广播意图,甚至允许控制设备是否唤醒。您只需要在服务中定义一个BroadcastReceiver,并在清单中声明即可。

你问题的最后一部分我不太理解,请更详细地说明你想要实现什么。


1
我仍然不明白Service和Runnable之间的区别是什么?似乎我可以使用Runnable代替Service。另外,在Service中调用哪个方法?例如,类似于Runnable()中的run()方法。 - ARK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接