位置: 编程技术 - 正文

并行执行的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 内容提供者(安卓核心架构)

  • 递延所得税资产借贷方向
  • 分支机构设立当年是否需要就地预缴企业所得税?
  • 跨年取得的发票怎么入账
  • 固定资产补提之前月度折旧怎么调整
  • 资本公积和实收资本是什么意思
  • 门票可以直接入账吗
  • 什么情况下要交个人所得纳税
  • 公司刻一套章子多少钱
  • 集团内部借款利息可以税前扣除吗
  • 小规模季度申报怎么申报
  • 个体工商户注销后的责任承担问题
  • 企业的日常经营活动主要包括哪三个经营过程
  • 组织职工捐款取得的现金计入什么会计科目?
  • 广告公司对外捐赠的会计处理怎么做?
  • 期初应收帐款
  • 已认证抵扣的进项发票,次月开具红字发票信息表,凭证
  • 没有收到发票的支出可以做成本吗
  • 跨年度发票退回如何记账
  • 劳务派遣差额征税税率是多少
  • 电商平台小规模纳税标准
  • 房地产土地成本计算公式
  • 增值税加计抵减账务处理
  • 提高主营业务收入的意义
  • 项目材料验收流程
  • 非贸易企业代扣代缴增值税和附加税如何做账?
  • 小型微利企业的企业所得税优惠政策
  • 单位开具发票
  • windows 10预览版
  • 金融资产减值损失计入什么科目
  • 固定资产减少和固定资产折旧
  • 个人签订借款合同
  • uni-app开发教程
  • 今日元宵节图片
  • vue项目安装路由
  • 货物及劳务包括哪些内容
  • 动态设置窗体记录源属性
  • WordPress 浏览量修改
  • 支付招聘网站费用怎么入账
  • 织梦可以放两套模板吗
  • 印花税漏交了有什么影响
  • 物流辅助服务是
  • 企业自查补税怎么报税
  • sql中count或sum为条件的查询示例(sql查询count)
  • 购进交通运输设备怎么做账
  • 兼职收入用缴纳增值税吗
  • 销项税用转出吗
  • 旅客运输进项抵扣加计扣除怎么算
  • 为取得固定资产而发生的什么支出可计入固定资产成本
  • 固定资产当月入账当月计提吗
  • 货物逾期保管费怎么算
  • 费用报销冲抵借支
  • 车辆挂靠收取管理费怎么做账?
  • 以前年度房租付了没计提
  • 进项税额转出的几种情况
  • 公允价值模式下出售投资性房地产
  • 旅行社开的机票款可以抵扣吗
  • 成本暂估入帐如何做分录
  • 工会经费的计提与缴纳
  • win097
  • Windows XP with SP2/SP3 原版下载汇总
  • ubuntu中no such file or directory
  • windows更新驱动程序需要多久
  • mac文本软件
  • 微软win8.1
  • win10一堆毛病
  • 动画时期
  • 浅析中国式现代化的理论价值与现实意义
  • javascriptj
  • linux shell实战
  • js tabs
  • jquery遍历div子元素
  • jquery.browser
  • jquery调用iframe中的方法
  • android数据存储与访问的方式有
  • javascript Base类 包含基本的方法
  • 重庆市国家税务局电子税务局官网
  • 生鲜肉类免税
  • 销售黄金的基本知识
  • 药店迁址流程2019
  • 建筑企业应如何选择适用的质量体系标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设