Andriod Service与Thread的区别介绍
首先,我们需要明确Service是运行在主线程的,不能有耗时操作,这样,在Service中处理耗时操作的时候,我们依然需要使用线程来处理。
既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢?
这是因为Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。而且在一个Activity中创建的子线程,另一个Activity无法对其进行操作。但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中的方法,即使Activity被销毁了,之后只要重新与Service建立关联,就又能够获取到原有的Service中Binder的实例。因此,使用Service来处理后台任务,Activity就可以放心地finish,完全不需要担心无法对后台任务进行控制的情况。
标准Service的写法:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread(new Runnable() {
@Override
public void run() {
// 开始执行后台任务
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
class MyBinder extends Binder {
public void startDownload() {
new Thread(new Runnable() {
@Override
public void run() {
// 执行具体的下载任务
}
}).start();
}
}
以上所述是小编给大家介绍的Andriod Service与Thread的区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Mac Android Studio 3.0 Terminal 中文乱码问题处理
本文给大家分享的是在更新Android Studio 3.0之后,使用Terminal时,发现 git log 命令查看历史 log会乱码,以及最后的解决方法,推荐给小伙伴们2017-11-11
Android PraiseTextView实现朋友圈点赞功能
这篇文章主要为大家详细介绍了PraiseTextView简单实现朋友圈点赞功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-01-01
解决Android popupWindow设置背景透明度无效的问题
这篇文章主要介绍了解决Android popupWindow设置背景透明度无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08


最新评论