当前位置: 首页 > news >正文

制作一个购物网站要多少钱最好用的下载软件排名

制作一个购物网站要多少钱,最好用的下载软件排名,网页微信版客户端,企业网站推广服务作者#xff1a;NanBox保活现状我们知道#xff0c;Android 系统会存在杀后台进程的情况#xff0c;并且随着系统版本的更新#xff0c;杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的#xff0c;因为可以节省内存#xff0c;降低功耗#xff0c;也避免…作者NanBox保活现状我们知道Android 系统会存在杀后台进程的情况并且随着系统版本的更新杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的因为可以节省内存降低功耗也避免了一些流氓行为。但有一部分应用应用本身的使用场景就需要在后台运行用户也是愿意让它在后台运行的比如跑步类应用。一方面流氓软件用各种流氓手段进行保活另一方面系统加大杀后台的力度导致我们一些真正需要在后台运行的应用被误杀苦不堪言。优雅保活为了做到保活出现了不少「黑科技」比如 1 个像素的 Activity播放无声音频双进程互相守护等。这些做法可以说是很流氓了甚至破坏了 Android 的生态好在随着 Android 系统版本的更新这些非常规的保活手段很多都已失效了。对于那些确实需要在后台运行的应用我们如何做到优雅的保活呢后台运行白名单从 Android 6.0 开始系统为了省电增加了休眠模式系统待机一段时间后会杀死后台正在运行的进程。但系统会有一个后台运行白名单白名单里的应用将不会受到影响在原生系统下通过「设置」 - 「电池」 - 「电池优化」 - 「未优化应用」可以看到这个白名单通常会看到下面这两位下次被产品说「 XXX 都可以保活为什么我们不行」的时候你就知道怎么怼回去了。大厂通过和手机厂商的合作将自己的应用默认加入到白名单中。如果你能谈成这种合作的大厂也就不用往下看了。好在系统还没有抛弃我们允许我们申请把应用加入白名单。首先在 AndroidManifest.xml 文件中配置一下权限可以通过以下方法判断我们的应用是否在白名单中RequiresApi(api Build.VERSION_CODES.M)private boolean isIgnoringBatteryOptimizations() { boolean isIgnoring false; PowerManager powerManager (PowerManager) getSystemService(Context.POWER_SERVICE); if (powerManager ! null) { isIgnoring powerManager.isIgnoringBatteryOptimizations(getPackageName()); } return isIgnoring;}如果不在白名单中可以通过以下代码申请加入白名单RequiresApi(api Build.VERSION_CODES.M)public void requestIgnoreBatteryOptimizations() { try { Intent intent new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse(package: getPackageName())); startActivity(intent); } catch (Exception e) { e.printStackTrace(); }}申请时应用上会出现这样一个窗口可以看到这个系统弹窗会有影响电池续航的提醒所以如果想让用户点允许必须要有相关的说明。如果要判断用户是否点击了允许可以在申请的时候调用 startActivityForResult在 onActivityResult 里再判断一次是否在白名单中。厂商后台管理Android 开发的一个难点在于各大手机厂商对原生系统进行了不同的定制导致我们需要进行不同的适配后台管理就是一个很好的体现。几乎各个厂商都有自己的后台管理就算应用加入了后台运行白名单仍然可能会被厂商自己的后台管理干掉。如果能把应用加入厂商系统的后台管理白名单可以进一步降低进程被杀的概率。不同的厂商在不同的地方进行设置一般是在各自的「手机管家」但更难的是就算同一个厂商的系统不同的版本也可能是在不同地方设置。最理想的做法是我们根据不同手机甚至是不同的系统版本给用户呈现一个图文操作步骤并且提供一个按钮直接跳转到指定页面进行设置。但需要对每个厂商每个版本进行适配工作量是比较大的。我使用真机测试了大部分主流 Android 厂商的手机后整理出了部分手机的相关资料。首先我们可以定义这样两个方法/** * 跳转到指定应用的首页 */private void showActivity(NonNull String packageName) { Intent intent getPackageManager().getLaunchIntentForPackage(packageName); startActivity(intent);}/** * 跳转到指定应用的指定页面 */private void showActivity(NonNull String packageName, NonNull String activityDir) { Intent intent new Intent(); intent.setComponent(new ComponentName(packageName, activityDir)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);}以下是部分手机的厂商判断跳转方法及对应设置步骤跳转方法不保证在所有版本上都能成功跳转都需要加 try catch。华为厂商判断public boolean isHuawei() { if (Build.BRAND null) { return false; } else { return Build.BRAND.toLowerCase().equals(huawei) || Build.BRAND.toLowerCase().equals(honor); }}跳转华为手机管家的启动管理页private void goHuaweiSetting() { try { showActivity(com.huawei.systemmanager, com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity); } catch (Exception e) { showActivity(com.huawei.systemmanager, com.huawei.systemmanager.optimize.bootstart.BootStartActivity); }}操作步骤应用启动管理 - 关闭应用开关 - 打开允许自启动小米厂商判断public static boolean isXiaomi() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(xiaomi);}跳转小米安全中心的自启动管理页面private void goXiaomiSetting() { showActivity(com.miui.securitycenter, com.miui.permcenter.autostart.AutoStartManagementActivity);}操作步骤授权管理 - 自启动管理 - 允许应用自启动OPPO厂商判断public static boolean isOPPO() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(oppo);}跳转 OPPO 手机管家private void goOPPOSetting() { try { showActivity(com.coloros.phonemanager); } catch (Exception e1) { try { showActivity(com.oppo.safe); } catch (Exception e2) { try { showActivity(com.coloros.oppoguardelf); } catch (Exception e3) { showActivity(com.coloros.safecenter); } } }}操作步骤权限隐私 - 自启动管理 - 允许应用自启动VIVO厂商判断public static boolean isVIVO() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(vivo);}跳转 VIVO 手机管家private void goVIVOSetting() { showActivity(com.iqoo.secure);}操作步骤权限管理 - 自启动 - 允许应用自启动魅族厂商判断public static boolean isMeizu() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(meizu);}跳转魅族手机管家private void goMeizuSetting() { showActivity(com.meizu.safe);}操作步骤权限管理 - 后台管理 - 点击应用 - 允许后台运行三星厂商判断public static boolean isSamsung() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(samsung);}跳转三星智能管理器private void goSamsungSetting() { try { showActivity(com.samsung.android.sm_cn); } catch (Exception e) { showActivity(com.samsung.android.sm); }}操作步骤自动运行应用程序 - 打开应用开关 - 电池管理 - 未监视的应用程序 - 添加应用乐视厂商判断public static boolean isLeTV() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(letv);}跳转乐视手机管家private void goLetvSetting() { showActivity(com.letv.android.letvsafe, com.letv.android.letvsafe.AutobootManageActivity);}操作步骤自启动管理 - 允许应用自启动锤子厂商判断 public static boolean isSmartisan() { return Build.BRAND ! null Build.BRAND.toLowerCase().equals(smartisan); }跳转手机管理private void goSmartisanSetting() { showActivity(com.smartisanos.security);}操作步骤权限管理 - 自启动权限管理 - 点击应用 - 允许被系统启动友商致敬在之前做的跑步应用中我在设置里增加了一个权限设置页面将上面提到的设置放在这里面。最近发现友商某咚也跟进了图 1 是我们做的图 2 是某咚做的某咚从设计、从我写的不够好的文案甚至是我从十几台手机上一张一张截下来的图进行了全方位的致敬。感谢某咚的认可但最近在某个发布会上听到这么一句话在致敬的同时能不能说一句谢谢某咚的致敬一方面说明了目前确实存在进程容易被杀保活难度大的问题另一方面也说明了这种引导用户进行白名单设置的手段是有效的。感谢大家能耐着性子看完啰里啰嗦的文章在这里我也分享一份私货自己收录整理的Android学习PDF架构视频面试文档源码笔记还有高级架构技术进阶脑图、Android开发面试专题资料高级进阶架构资料帮助大家学习提升进阶也节省大家在网上搜索资料的时间来学习也可以分享给身边好友一起学习如果你有需要的话可以点赞评论转发关注我然后私信我【进阶】我发给你
http://www.zqtcl.cn/news/449561/

相关文章:

  • 网页设计与网站建设郑州大学怎么在传奇网站上做宣传
  • 中国建设银行重庆网站首页sns网站需求
  • 外网常用网站全网网站建设设计
  • 成都建设网站费用做数据库与网站招什么人
  • 最好的wordpress教程啥叫优化
  • 哪个网站做网销更好网站流量流出异常
  • 广州网站定做纸箱手工制作大全
  • 数据库修改网站后台密码cms三合一网站源码
  • 一般做哪些外贸网站丰南建设局网站
  • 网站如何被收录情况自己做的网站如何实现下载文件
  • 龙岩网站设计一般要多久深圳做自适应网站设计
  • 类似于拼多多的网站怎么做资料下载网站建设
  • 做商城网站哪里网站官网建设的价格
  • 网站怎么做用户体验山东富国建设投资有限公司网站
  • app ui模板网站首页改版影响优化
  • 周村网站制作哪家好网站设计基本要素
  • 网站制作与维护费用wordpress文章页不显示侧边
  • 嘉兴网站建设正规公司做室内设计人喜欢的网站
  • 入侵dedecms网站管理员密码百度注册域名免费建站
  • 找晚上做的工作去哪个网站企业开发软件公司拓展方案
  • 济宁建站公司wordpress博客入门
  • 做外贸需要网站wordpress app 打包
  • 免费网站站长查询丽水微信网站建设公司
  • 广州品牌网站建设先做网站 先备案
  • jsp系统网站建设带源代码梧州网页设计
  • 二手书籍交易网站开发方式关键词seo排名优化如何
  • 陕西西安潍坊网站seo外包
  • 计算机专业网站开发开题报告网站推广营销怎么做
  • 比较大的做网站的公司电影网站盗链怎么做
  • 江苏响应式网站建设哪里有台州网站制作方案