位置: 编程技术 - 正文

并行执行的Service,以媒体转码成新格式为例(并行执行的符号)

编辑:rootadmin

推荐整理分享并行执行的Service,以媒体转码成新格式为例(并行执行的符号),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:并行执行的语言,并行执行的意思,并行执行的符号,并行执行的CPU利用率,并行执行的特征,并行执行的CPU利用率,并行执行的语言,并行执行的语言,内容如对您有帮助,希望把文章链接给更多的朋友!

大家众所周知,IntentService内置的handler只有一个线程,而AsyncTask又只适合时间至多几秒的操作,所以我们关注使用ExecutorService建立并行执行。为了确保Service一直保持活跃状态,需要调用Service.startForeground()方法。由于Service.startForeground()和Service.stopForeground()并不会叠加,所以还需要维护一个内部计数器,用来记录活跃的任务。一旦计数器为0则调用Service.stopForeground();

在这个例子中,主要介绍怎么利用Service执行并行的任务,并不是主要讲解多媒体&#;式文件转码的操作,所以转码操作都省略,主要实现并行执行。

public class MediaTranscoder extends Service {private static final int NOTIFICATION_ID = ;//定义通知的标识IDpublic static final String ACTION_TRANSCODE_MEDIA = "com.liyaunjinglyj.services.TRANSCODE_MEDIA";public static final String EXTRA_OUTPUT_TYPE = "outputType";//转码的类型private ExecutorService mExecutorService;//定义线程池private int mRunningJobs = 0;//任务计数器private final Object mLock = new Object();//锁private boolean mIsForeground = false;//标志是否需要结束Service@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();this.mExecutorService = Executors.newCachedThreadPool();//缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse.如果没有,就建一个新的线程加入池中,缓存型池子通常用于执行一些生存期很短的异步型任务,因此在一些面向连接的daemon型SERVER中用得不多。能reuse的线程,必须是timeout IDLE内的池中线程,缺省timeout是s,超过这个IDLE时长,线程实例将被终止及移出池。 注意,放入CachedThreadPool的线程不必担心其结束,超过TIMEOUT不活动,其会自动被终止。}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {String action = intent.getAction();if (ACTION_TRANSCODE_MEDIA.equals(action)) {String outputType = intent.getStringExtra(EXTRA_OUTPUT_TYPE);

并行执行的Service,以媒体转码成新格式为例(并行执行的符号)

//启动新的作业增加计数器synchronized (mLock) {TranscodeRunnable transcodeRunnable = new TranscodeRunnable(intent.getData(), outputType);mExecutorService.execute(transcodeRunnable);//执行当前线程mRunningJobs&#;&#;;//线程计数器加1startForegroundIfNeeded();//创建通知,并保持活跃}}return START_NOT_STICKY;//系统回收资源关闭了当前的Service并不会重新启动.适合执行一次性操作。}@Overridepublic void onDestroy() {super.onDestroy();this.mExecutorService.shutdownNow();//shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务}private class TranscodeRunnable implements Runnable {private Uri mInData;private String mOutputType;private TranscodeRunnable(Uri inData, String outputType) {this.mInData = inData;this.mOutputType = outputType;}@Overridepublic void run() {

//在这里执行转码操作

//转码完成后,计数器加1

synchronized (mLock) {mRunningJobs--;stopForegroundIfAllDone();}}}private void stopForegroundIfAllDone() {if (mRunningJobs == 0 && mIsForeground) {stopForeground(true);this.mIsForeground = false;}}private void startForegroundIfNeeded() {if (!mIsForeground) {Notification notification = buildNotFication();startForeground(NOTIFICATION_ID, notification);this.mIsForeground = true;}}private Notification buildNotFication() {Notification notification = null;

//在这里构建通知return notification;}}

XMPP聊天软件客户端开发(1) 在此记下我做这个项目的过程,遇到的难点和问题。OK,项目开始问题当然是怎么去开发。在初步了解XMPP是一个协议就可以知道这个开源的协议会有很

利用 LeakCanary 来检查 Android 内存泄漏 前言你被概率性的OOM困扰么?有时候,OOM像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着。或许,是时候用LeakCanary来诊断一下了。它是一个

Android核心基础-5.Android 数据存储与访问-4. ContentProvider 内容提供者 续上一博文(Android核心基础-5.Android数据存储与访问-3.使用Sqlite进行数据存储)四、ContentProvider内容提供者4.1什么是ContentProviderContentProvider是安卓四大组件

标签: 并行执行的符号

本文链接地址:https://www.jiuchutong.com/biancheng/374557.html 转载请保留说明!

上一篇:Android提供第三方jar包时资源打包(android-3)

下一篇:Android核心基础-5.Android 数据存储与访问-4. ContentProvider 内容提供者(安卓核心架构)

  • php循环table实现一行两列显示的方法(php循环语句)

    php循环table实现一行两列显示的方法(php循环语句)

  • php时间计算相关问题小结(php日期计算器)

    php时间计算相关问题小结(php日期计算器)

  • SQL注入全过程深入分析(sql注入的原理和步骤)

    直接通过Google浏览器就能去除。

    点击登录,返回的信息如下:

    Conversion failed when converting the nvarchar value 'master' to data type int.

    数据库名称“master”通过异常被显示出来!依次改变上面SQL语句中的序号,

    就能得到服务器上所有数据库的名称。

    接着,输入信息如下:

    得到返回信息如下:

    Conversion failed when converting the nvarchar value 'spt_fallback_db' to data type int.

    我们得到了master数据库中的第一张表名:“spt_fallback_db”,

    同上,依次改变序号,可得到该库全部表名。

    现在我们以“spt_fallback_db”表为例,尝试获取该表中所有的字段名。在输入框中输入以下代码:

    于是,得到错误提示如下:

    "Conversion failed when converting the nvarchar value 'xserver_name' to data type int." class="img-responsive" alt="SQL注入全过程深入分析(sql注入的原理和步骤)">

    SQL注入全过程深入分析(sql注入的原理和步骤)

  • 解决SqlServer 各版本 sa帐户不能登录问题(sql server遇到的主要问题及解决方法)

    解决SqlServer 各版本 sa帐户不能登录问题(sql server遇到的主要问题及解决方法)

  • Win10 Mobile 14393.321终于修复Lumia636/638导航栏遮挡

    Win10 Mobile 14393.321终于修复Lumia636/638导航栏遮挡

  • Linux下5个有趣的命令行技巧介绍(有趣的linux命令)

    Linux下5个有趣的命令行技巧介绍(有趣的linux命令)

  • Java中Timer的用法详解(java timer)

    Java中Timer的用法详解(java timer)

  • 用来检测输入的选项$1是否在PATH中的shell脚本(检测输入条件的各种组合)

    用来检测输入的选项$1是否在PATH中的shell脚本(检测输入条件的各种组合)

  • 使用JS CSS去除IE链接虚线框的三种方法(js去除hover样式)

    使用JS CSS去除IE链接虚线框的三种方法(js去除hover样式)

  • python daemon守护进程实现(python守护线程与非守护线程)

    python daemon守护进程实现(python守护线程与非守护线程)

  • asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)

    asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)

  • 融资性售后回租印花税
  • 退货开具红字发票销项税为负数税务局会查吗
  • 零税率和免税一样吗?哪一个更优惠?
  • 事假工资在税前扣除标准
  • 委托开发票的证明怎么写
  • 购进货物用于在建工程要交增值税吗
  • 税收优惠退税账户是什么
  • 企业所得税纳税调增调减怎么确定
  • 企业城建税教育费附加和地教费的税率是多少
  • 怎样确定是否计入固定资产清理科目
  • 库存冲红是什么意思
  • 事业单位财政授权书模板
  • 领购增值税专用发票
  • 水利建设专项收入怎么计算
  • 独立核算分公司可以享受小型微利企业优惠吗
  • 土地使用权的原值和账面价值
  • 生产企业成本会计科目
  • 出纳能不能兼开专票
  • 禁用的网络在哪里开启
  • 销售旧设备如何开票
  • 进程mmc.exe
  • uniapp自定义组件模式
  • php的脚本语言
  • php制作验证码
  • c#openxml
  • json对象和js对象
  • 变动成本法计算营业利润
  • 公司已经注销了还能劳动仲裁吗
  • 企业所得税法定税率是多少
  • 工程收到款项会计分录
  • zabbix server端口
  • "设计"
  • python字典keys方法 顺序
  • 连带责任担保会被拘留吗
  • 河北汽车购置税税率
  • 银行承兑汇票收费标准
  • 怎么理解中国实际
  • 存根联是自己留着吗
  • 报销借款分录怎么做
  • javascript 箭头
  • phpcms使用教程
  • sqlserver存储过程声明变量
  • 借贷记账法的记账规则是
  • 开票资料需要哪些东西
  • 注册资金印花税税率是多少,怎么计算?
  • T-SQL语句修改数据表属性
  • ip地址跳转域名
  • PostgreSQL教程(五):函数和操作符详解(1)
  • 事业单位退休人员判缓刑最新规定
  • 咨询服务业优惠政策
  • 临时工工资无发票可以扣除吗
  • 长期合同价格怎么定
  • 怎样单方面注销手机卡
  • 实收资本相关认定
  • 存货跌价准备冲减成本
  • MySQL replace into 语句浅析(一)
  • sql平均数函数
  • Win10一键永久激活数字工具
  • win10系统优酷播放不了
  • win7系统如何一键还原
  • win10动态磁贴不更新
  • ubuntu安装sz
  • 以root身份建一个目录/test
  • 在linux 上使用QQ聊天程序
  • xp录音软件
  • shell包含文件
  • python shape用法
  • python将字典转换成字符串
  • shell命令是干嘛的
  • nvm下载安装
  • 从安卓设备导入
  • csgo视角指令锁定枪械摇晃
  • javascript 继承
  • 静态类 java
  • javascript如何学
  • 前端闭包函数
  • jquery有自定义选择器吗
  • java多线程编程实战指南
  • 广东税务待遇
  • 雄安属于北京管吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设