解决方案

时间:2024-10-31 12:06:05 解决方案 我要投稿

实用的解决方案模板合集四篇

  为了确保事情或工作扎实开展,时常需要预先制定一份周密的方案,方案是书面计划,具有内容条理清楚、步骤清晰的特点。那么什么样的方案才是好的呢?以下是小编精心整理的解决方案5篇,欢迎大家分享。

实用的解决方案模板合集四篇

  解决方案 篇1

  Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深。下面记录一下,我解决Android闹钟设置的解决方案。

  主要问题

  1、API19开始AlarmManager的机制修改。

  2、应用程序被Kill掉后,设置的闹钟不响。

  3、6.0以上进入Doze模式会使JobScheduler停止工作。

  4、手机设置重启后,闹钟失效问题。

  API19以上AlarmManager机制的修改

  API19之前AlarmManager提供了三个设置闹钟的方法,由于业务需求闹钟只需要一次性,所以采用set(int type,long startTime,PendingIntent pi);这个方法。

  从API 19开始,AlarmManager的机制都是非准确传递,操作系统将会转换闹钟,来最小化唤醒和电池使用。

Android闹钟设置的解决方案1  

  由于之前的程序,没有对API19以上的闹钟设置做处理,导致在4.4以上的手机设置闹钟无响应(应用程序没有被杀死的情况也没有闹钟)。

  因些,设置闹钟需要根据API的版本进行分别处理设置。代码如下:

  AlarmManager am = (AlarmManager) getActivity() .getSystemService(Context.ALARM_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { am.setExact(AlarmManager.RTC_WAKEUP, TimeUtils .stringToLong(recordTime, TimeUtils.NO_SECOND_FORMAT), sender);}else { am.set(AlarmManager.RTC_WAKEUP, TimeUtils .stringToLong(recordTime, TimeUtils.NO_SECOND_FORMAT), sender);}

  这样,保证闹钟在应用程序没有被Kill掉的情况闹钟。

  应用程序被Kill掉时的处理

  应用程序被Kill掉后,设置的闹钟失效,这里利用守护进程以及灰色保活来保证后台闹钟服务不被Kill掉。当应用程序以及闹钟服务被Kill掉,守护进程以及灰色保活来重新启动闹钟服务,并且重新设置闹钟。

  关于守护进程的处理,这里采用开源的守护进程库。Android-AppDaemon

  在闹钟服务的onCreat加入Android-AppDaemon这个开源的守护进程。代码如下:

  @Overridepublic void onCreate() { super.onCreate(); Daemon.run(DaemonService.this, DaemonService.class, Daemon.INTERVAL_ONE_MINUTE); startTimeTask(); grayGuard();}

  为进一步保证闹钟服务的存活,同加上灰色保活(利用系统的漏洞启动前台Service)。

  代码如下:

  private void grayGuard() { if (Build.VERSION.SDK_INT < 18) { //API < 18 ,此方法能有效隐藏Notification上的图标 startForeground(GRAY_SERVICE_ID, new Notification()); } else { Intent innerIntent = new Intent(this, DaemonInnerService.class); startService(innerIntent); startForeground(GRAY_SERVICE_ID, new Notification()); } //发送唤醒广播来促使挂掉的UI进程重新启动起来 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(); alarmIntent.setAction(WakeReceiver.GRAY_WAKE_ACTION); PendingIntent operation = PendingIntent.getBroadcast(this, WAKE_REQUEST_CODE, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { alarmManager.setWindow(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, operation); }else { alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, operation); }}/** * 给 API >= 18 的平台上用的灰色保活手段 */public static class DaemonInnerService extends Service { @Override public void onCreate() { Log.i(LOG_TAG, "InnerService -> onCreate"); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(LOG_TAG, "InnerService -> onStartCommand"); startForeground(GRAY_SERVICE_ID, new Notification()); //stopForeground(true); stopSelf(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public void onDestroy() { Log.i(LOG_TAG, "InnerService -> onDestroy"); super.onDestroy(); }}

  上面操作尽可能提高闹钟服务的存活。但是在5.0以上的手机,利用系统的自带的Clean功能的时候,还是会将闹钟服务彻底的干掉。为了解决5.0以上的问题,这里引入5.0以上的新特性 JobScheduler。

  5.0以上的JobScheduler

  在这里利用5.0以上的JobScheduler创建一个定时的任务,定时检测闹钟服务是否存在,没在存在则重新启动闹钟服务。(这里我设置每一分钟检测一次闹钟服务)

  在进入应用程序的时候检测当前系统是否是5.0以上,如果是则启动JobScheduler这个服务。代码如下:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(getPackageName(), JobSchedulerService.class.getName())); builder.setPeriodic(60 * 1000); //每隔60秒运行一次 builder.setRequiresCharging(true); builder.setPersisted(true); //设置设备重启后,是否重新执行任务 builder.setRequiresDeviceIdle(true); if (mJobScheduler.schedule(builder.build()) <= 0) { //If something goes wrong }}

  其中的builder.setPersisted(true); 方法是设备重启后,是否重新执行任务,在这测过是可以重新启动任务的。

  上面的操作进一步保证了闹钟服务被Kill掉后,重新启动服务。但是在6.0以上引入了Doze模式,当6.0以上的手机进入这个模式后,便会使JobScheduler停止工作。

  6.0以上Doze模式的处理

  为了让JobScheduler可以在6.0以上进入Doze模式工作,这里针对6.0以上的Doze模式做特殊的处理-忽略电池的优化。

  在Manifest.xml中加入权限。

  在设置闹钟的时候,判断系统是否是6.0以上,如果是,则判断是否忽略电池的优化。判断是否忽略电池优化代码如下:

  @TargetApi(Build.VERSION_CODES.M)public static boolean isIgnoringBatteryOptimizations(Activity activity){ String packageName = activity.getPackageName(); PowerManager pm = (PowerManager) activity .getSystemService(Context.POWER_SERVICE); if (pm.isIgnoringBatteryOptimizations(packageName)) { return true; }else { return false; }}

  如果没有忽略电池优化的时候,弹出提醒对话框,提示用户进行忽略电池优化操作。代码如下:

  /*** 针对N以上的`Doze模式** @param activity*/public static void isIgnoreBatteryOption(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { try { Intent intent = new Intent(); String packageName = activity.getPackageName(); PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE); if (!pm.isIgnoringBatteryOptimizations(packageName)) {// intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); activity.startActivityForResult(intent, REQUEST_IGNORE_BATTERY_CODE); } } catch (Exception e) { e.printStackTrace(); } }}

  在界面重写onActivityResult方法来捕获用户的选择。如,代码如下:

  @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == BatteryUtils.REQUEST_IGNORE_BATTERY_CODE){ //TODO something } }else if (resultCode == RESULT_CANCELED){ if (requestCode == BatteryUtils.REQUEST_IGNORE_BATTERY_CODE){ ToastUtils.show(getActivity(), "请开启忽略电池优化~"); } }}

  补充

  当应用程序被Kill掉,但是闹钟的服务没有被Kill掉的,这时候又设置了闹钟。这就意味着设置的闹钟没有放到闹钟服务那里。所以这种情况,设置的闹钟会失效。为了解决这种情况,利用AIDL(闹钟服务在另一个进程的需要进程间通信)调用闹钟服务的重新设置闹钟方法重设闹钟。

  在应用程序的onCreat()方法启动闹钟服务,然后再绑定闹钟服务。

  private void initAlarmService() { startService(new Intent(this, DaemonService.class));//启动闹钟服务 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //JobScheduler ... } //绑定闹钟服务 Intent intent = new Intent(this, DaemonService.class); intent.setAction("android.intent.action.DaemonService"); bindService(intent, mConnection, Context.BIND_AUTO_CREATE);}

  在onDestroy()方法,调用闹钟服务的重设闹钟方法。代码如下:

  @Overrideprotected void onDestroy() { super.onDestroy(); try {//判断是否有闹钟,没有则关闭闹钟服务 String alarm = localPreferencesHelper.getString(LocalPreferencesHelper.ALARM_CLOCK); if (daemonService != -1 && mIRemoteService != null) {// android.os.Process.killProcess(daemonService); mIRemoteService.resetAlarm(); } if (!alarm.equals("[]")) { if (daemonService != -1) { startService(new Intent(this, DaemonService.class)); } } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mJobScheduler.cancel(JOB_ID); } } unbindService(mConnection); //解除绑定服务。 } catch (Exception e) { }}

  这里说明一下,当服务启动并且被绑定的情况下,unbindService是不会停止服务的。

  最后

  以上并不代表所有的Android手机的闹钟都可以用,这只是尽最大的可能保证大部分的手机。

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持教程网。

  解决方案 篇2

  概述

  针对于近年来涌现出的越来越多,越来越复杂的汽车行业服务需求,软通动力依托自身多年在服务行业的经验,以及自身对于汽车行业的了解,加之多年针对国内外汽车相关企业的服务实践,形成了一套具有自我特色的服务链条,为客户提供及时、准确、高效的服务。

  解决方案

  基于软通动力对汽车行业的了解,相关行业服务包括:

  针对于信息管理系统的服务;

  针对汽车行业的管理咨询服务,包括PMO及Rollout服务;

  针对汽车行业的移动互联的相关服务;

  软通根据不同的服务需求,严格遵循相关服务流程,在每个关键节点对服务成果进行监控,并持续进行修正,最终让客户满意。

  能力优势

  多年的行业服务经验;

  针对于信息系统方面的.多年开发、测试、运维的经验;

  众多移动互联方向项目的实施经验;

  针对汽车制造商内部IT项目管理提供咨询(PMO)服务,帮助主机厂高效利用资源与合理分配项目资金,对正在运作的相关项目提供专业化的项目管理指导;

  针对汽车制造商帮助品牌经销商上线相关信息管理系统提供Rollout咨询服务。

  客户收益

  定制化的汽车行业服务方案,满足客户的多样服务需求;

  不断完善服务模型,能为客户提供高品质、高效的服务;

  帮助客户实现对市场的准确定位及精准服务;

  帮助客户更好地预测及分析全球市场动态,及时有效的调整企业发展战略。

  典型客户

  某全球工程车知名企业

  某国有知名汽车集团

  某全球汽车知名企业

  某全球汽车企业中国合资公司

  成功案例

  (20xx-至今)某国有知名汽车集团—信息系统研发项目

  (XX-XX)某全球汽车知名企业IT部门--PMO & Rollout服务

  (XX-至今)某全球汽车企业中国合资公司R&D中心--PMO服务

  (XX-至今)某国有知名汽车集团— CRM市场营销APP平台开发运维项目

  解决方案 篇3

  我国房地产行业始于20世纪80年代初期,经历了漫长的发展,跨入21世纪,随着国内外形式的变化,行业的宏观环境发生了巨大的变化。中国房地产业正处于向规模化、品牌化、低成本、规范运作的转型时期,现阶段对房地产行业的管理提出了更高的要求,如提高行业技术和服务水平,降低成本和营销费用,提高利润率等。

  我国房地产企业多为跨地域经营,以项目为单元进行业务管理,对业务过程都制定了严格标准的管理流程和业务制度,实现从计划到执行的规范与高效,同时,房地产行业存在大量的资金流转,对资金的管理和成本费用的控制难度较大。

  行业管理困惑

  计划执行有偏差。项目计划执行过程调整频繁,存在抢工期现象,执行进度及质量控制存在风险招标管理不规范。招标计划管理不到位,存在先斩后奏现象,成本不可控,招标审批过程不透明,缺乏监管,招标资料散乱,信息流失严重合同管理缺乏记录。工程采购合同量大,审批过程迟缓,涉及付款项目多,预算核算工作量大,常有遗漏,合同付款批次多,易出现重复付款情况跨地域协作不便。总部与异地项目公司沟通成本高,时效性差,信息传递存在衰减。

  计划管理

  通过计划管理落实跟进项目计划的执行过程,实时记录反馈项目进度及质量,保障项目顺利开展。

  实现项目计划从报批到安排再到执行与反馈的全过程管理;实时把控计划进度最新情况,掌握一手资料,信息记录与留痕;动态数据分析,监管计划执行过程,及时发现问题,辅助决策。

  招标管理

  建立完整供应商信息库,通过招标需求和计划进行前期管理,并完整记录招标过程各项信息,规范招标过程。

  建立完整的供方信息库和招标资料库,便于信息检索和核查;规范招标过程管理,可视化监管招标情况,信息完整、记录留痕;实时数据监控,掌握招标前后过程,提前控制,辅助决策。

  合同管理

  建立合同管理从审批到归档到执行的`全过程管控机制,对合同档案和付款信息均有完整记录,有据可查建立合同从拟定审批,到归档执行,再到付款的全过程管理;规范合同过程管理,跟进履约情况,掌握付款记录;根据合同执行情况分析,制定准确的季度、月度预算。

  协同工作

  将各项工作分类汇总,建立网络化沟通渠道和信息展现平台,实现信息共享、有效授权、顺畅沟通实时、多维查看全部在建项目信息,确保及时发现问题,快速响应,为管理者提供决策依据。

  方案优势

  集团监控

  通过决策支持(BI)系统,实现对项目各种统计报表、KPI指标的预警分析。

  公司管控

  按照管理职能分工,对项目、人员、资金、市场等进行对口管控。

  项目管控

  规范基层项目执行操作,使项目管理体系可执行、可协同、可监控。

  全员应用、全过程管理通过业务平台集成实现全员应用、全过程管理(任何人、任何时间,任何地点)。通过平台与内外部单位的业务协同。

  解决方案 篇4

  为进一步提升服务企业、服务项目、服务发展的能力和水平,大力弘扬“主动服务、创新服务、高效服务、廉洁服务”的工作作风,按照市优化经济发展软环境领导小组《关于在全市开展“问题解决月”活动的实施方案》要求,结合我局实际,现就组织开展“问题解决月”活动提出如下实施方案。

  一、工作目标

  以“强化服务解难题,提升效能促发展”为主题,以企业满意为标准,切实解决科技部门在服务企业发展、推进科技创新中存在的问题,扶助企业做优做强。

  二、目标任务

  将开展“问题解决月”活动作为创先争优活动的重要内容、深化能力作风建设的重要载体,努力形成支持发展、服务发展的浓厚氛围,为企业和群众多办事、办实事、办好事,为加快转型升级创造良好的'环境。

  三、活动内容和步骤

  (一)宣传发动(3月上旬)。成立“问题解决月”活动领导小组,制定活动实施方案。召开会议,进行广泛深入地宣传发动,统一思想,形成全力。

  (二)调研收集问题(3月中旬至6月底)。依据我局的职能,三个职能科室各为一个组,开展“走进企业、服务发展”工作,通过走访、座谈会、网站征集等形式,认真听取企业的意见、建议,深入查找本单位服务效率、工作作风和企业科技创新面临的难题。综合计划科调研收集创新型城市建设、高新技术产业发展、创新平台建设、科技兴农等方面的问题与不足。法规科调研收集企业知识产权战略实施、知识产权保护等方面的问题与不足。科技服务科调研收集企业科技创新中所面临的技术难题、人才短缺和产学研合作等方面的问题与不足。针对排查出的问题,迅速制定整改措施加以解决(收集到的问题及整改情况于6月底前报市优化办)。

  (三)解决问题(7月)。根据深入企业和服务单位收集到的问题,召开“问题解决月”活动领导小组会议,对问题逐条逐项地进行分析研究,对问题的解决情况进行督查,确保解决一批制约我市科技创新的瓶颈问题。

  (四)巩固提高(8月)。开展问题“回头看”,巩固活动成果。对已经解决的问题,要加强回访;对办理进度、难度较大的问题,需要别的部门协调解决的,加大协调力度。各科室要对开展“问题解决月”活动情况进行认真总结(总结于8月15日前报局办公室),对举措实、效果好、企业满意度高的典型事例,将在全局进行推广,形成服务企业的长效机制。

【解决方案】相关文章:

解决方案05-20

解决方案(实用)05-27

解决方案优秀05-12

行业解决方案08-16

erp解决方案04-22

oa解决方案05-31

产品解决方案11-19

招聘解决方案02-14

解决方案(精)05-23

解决方案【优秀】08-25