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的区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
深入剖析Android中Service和Thread区别
Service既不是进程也不是线程,它们之间的关系如下: 可能有的朋友会问了,既然是长耗时的操作,那么Thread也可以完成啊.没错,在程序里面很多耗时工作我们也可以通过Thread来完成,那么还需要Service干嘛呢.接下来就为大家解释以下Service和Thread的区别. 首先要说明的是,进程是系统最小资源分配单位,而线程是则是最小的执行单位,线程需要的资源通过它所在的进程获取. Service与Thread的区别: Thread:Thread 是程序执行的最小单元,可以用 Thread
-
Andriod Service与Thread的区别介绍
首先,我们需要明确Service是运行在主线程的,不能有耗时操作,这样,在Service中处理耗时操作的时候,我们依然需要使用线程来处理. 既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢? 这是因为Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例.而且在一个Activity中创建的子线程,另一个Activity无法对其进行操作.但是Service就不同了,所有的Activity
-
idea中断点类型之All和Thread的区别介绍
All模式 所有的线程都要在当前位置被阻塞,谁先来就先阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待. 如果此时按下一步F6,那所有的线程都通过阻塞代码如果此时按恢复程序运行F8,那么当前线程通过阻塞代码,等待下一个线程的到来,也是谁先来阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待. public class ThreadAndAllBreakApplication { public static void main(String[] args) {
-
Android Service中方法使用详细介绍
service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务.例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动一个activity来与音乐播放器交互. Service的两种实现形式 1.非绑定 通过调用应用程序组件(例如Activity)的startService()方法来启动一个服务.一旦启动,服务就会在
-
Java线程池的几种实现方法和区别介绍
Java线程池的几种实现方法和区别介绍 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.E
-
深入浅析WinForm 进程、线程及区别介绍
一.进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动. 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体. Process 类,用来操作进程. 命名空间:using System.Diagnostics; Process.Start("calc"); //打开计算器 Process.Start("mspaint"); //打开画图 Process.Start("iexplore" , "http://www.
-
浅析Java中Runnable和Thread的区别
线程的起动并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN方法, 我们普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法却不一样,它只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样. 你简单的调用run方法是没有这样效果的,所以你必须调用Thread类的start方法来启动你的线程.所以你启动
-
详解多线程及Runable 和Thread的区别
Thread和Runnable区别 执行多线程操作可以选择 继承Thread类 实现Runnable接口 1.继承Thread类 以卖票窗口举例,一共5张票,由3个窗口进行售卖(3个线程). 代码: package thread; public class ThreadTest { public static void main(String[] args) { MyThreadTest mt1 = new MyThreadTest("窗口1"); MyThreadTest mt2 =
-
浅析Bean Searcher 与 MyBatis Plus 区别介绍
目录 区别一(基本) 区别二(高级查询) 1)使用 MyBatis Plus 查询: 2)使用 Bean Searcher 查询: 区别三(逻辑分组) 区别四(多表联查) 区别五(使用场景) 疑问 1)这貌似开放很大的检索能力,风险可控吗? 条件约束 排序约束 2)使用 Bean Searcher 后 Controller 的入参必须是 Map 类型? 3)前端乱传参数的话,存在 SQL 注入风险吗? 4)可以随意传参,会让用户获取本不该看到的数据吗? 总结 Bean Searcher 号称 任
-
C#中Backgroundworker与Thread的区别
目录 1.Backgroundworker 2.Thread 3.总结 最近项目要用到,窗体Form程序要在后台开启几个子线程,负责和其他端进行通信,异步读写,并且来更改UI.在网上查了有Backgroundworker与Thread两种方法. 1.Backgroundworker BackgroundWorker是微软的在.net Framwork中添加的一个组件,主要对线程的访问提供了一种安全的方式.简单的说就是对Thread的一次封装. 首先介绍一下BackgroundWorker的相关属
随机推荐
- dos 目录跳转 cd
- 字符串聚合函数(去除重复值)
- Javascript之旅 对象的原型链之由来
- Python利用前序和中序遍历结果重建二叉树的方法
- JavaScript高级程序设计 阅读笔记(十九) js表格排序
- javascript操作数组详解
- Global.asax取绝对路径的方法
- Linux下用Valgrind做检查(防止内存泄露)
- mysql支持跨表delete删除多表记录
- mysql误删root用户恢复方法
- ES6中Math对象新增的方法实例详解
- 一个基于flask的web应用诞生 bootstrap框架美化(3)
- python实现巡检系统(solaris)示例
- ShowPage 显示“上一页 下一页”等信息的封装代码
- js读取被点击次数的简单实例(从数据库中读取)
- jQuery 获取浏览器所在的IP地址的小例子
- 解决Vue2.x父组件与子组件之间的双向绑定问题
- 在Pycharm中项目解释器与环境变量的设置方法
- Java判断对象是否为空(包括null ,"")的方法
- nodejs实现超简单生成二维码的方法