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

微信开放平台相关认证方式廊坊网站快速排名优化

微信开放平台相关认证方式,廊坊网站快速排名优化,网站建设东北,网站源码 一品资源网背景 你可能会好奇#xff0c;有些手游#xff08;比如王者荣耀#xff09;是怎么实现资源更新后自动重启的#xff1f; 这个体验确实不错#xff0c;因为不需要用户手动点击桌面图标重启App#xff0c;在一些数据恢复备份的场景中#xff0c;很实用。比如#xff0c…背景 你可能会好奇有些手游比如王者荣耀是怎么实现资源更新后自动重启的 这个体验确实不错因为不需要用户手动点击桌面图标重启App在一些数据恢复备份的场景中很实用。比如从云端拉取SQLite数据库db文件或一些prefs配置文件后会直接覆盖到本地但进程不重新启动的话是不会生效的。 思路 基本思路其实很简单利用Android应用对多进程的天然支持来实现双进程互拉。 有的朋友一看见“双进程”、“互拉”这些词汇就会立马联想到保活注意本文不是讲保活的哦。 为了方便讲解我们定义主进程之外的另一个进程为 进程B。大致流程分这么几步 在主进程执行完一系列业务逻辑后欲重启先拉起进程B进程B启动后主进程kill掉自己接着进程B拉起主进程然后再kill掉自己此时主进程完成自动重启 实现 先在Manifest中声明进程B为了良好的交互体验需要实现一个Activity进程名称自定义比如此处叫“killer”是不是很贴切 activityandroid:name.KillerActivityandroid:exportedfalseandroid:launchModesingleTaskandroid:process:killer /关键实现来了 class KillerActivity : FragmentActivity() {companion object {private const val EXTRA_MAIN_PID extra_main_pid// 当主进程需要重启时就直接调用此方法启动KillerActivityfun launch(activity: FragmentActivity) {activity.startActivity(Intent(activity, KillerActivity::class.java).apply {putExtra(EXTRA_MAIN_PID, Process.myPid())})activity.finish() // 主进程的Activity先关闭GlobalScope.launch {// 稍作延迟后主进程kill掉自己delay(500L)killProcess()}}fun killProcess(pid: Int Process.myPid()) {Process.killProcess(pid)exitProcess(0)}fun isMainProcessAlive(context: Context): Boolean runCatching {(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).runningAppProcesses.find { it.processName context.packageName } ! null}.getOrDefault(false)}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)lifecycleScope.launch {// 此处可以插入一些Loading的UI显示比如ProgressDialog之类的// ...// 二次检查防止主进程没杀掉doubleCheckMainProcess()// 稍作等待后再次启动主进程的ActivitystartActivity(Intent(this, MainActivity::class.java).apply {addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)})// 进程B的KillerActivity先关闭再kill掉自己finish()killProcess()}}private suspend fun doubleCheckMainProcess() {delay(1500L)if (isMainProcessAlive(this)) {val mainPid intent.getIntExtra(EXTRA_MAIN_PID, 0)if (mainPid ! 0) {killProcess(mainPid)delay(1500L)}}} }整个代码非常简单只要搞清楚 killProcess 方法哪些时候是kill的哪个进程就理解了。在任意一个需要重启当前进程可以不只是主进程的地方调用 KillerActivity.launch(this)即可。
http://www.pierceye.com/news/48384/

相关文章:

  • 化妆品电子商务网站建设规划书云服务器建网站
  • 电话网站源码wordpress 无法登录后台
  • 门户网站编辑联系方式深度科技有限公司
  • 建网站-湛江市网站后端都需要什么意思
  • 交易所网站建设教程wordpress长文章不显示评论框
  • 学校官方网站基因网站开发
  • 拖拽网站heritrix做网站
  • 南宁网站建设哪seo实战密码第四版电子书
  • 山东建站管理系统网站二维码制作
  • 设计单位在厦门什么网站centos 6 wordpress
  • 自己做抽奖网站违法吗搜索引擎营销怎么做
  • 石油化工建设网站江苏省建设工程招标网
  • 网站提交收录软件幼教资源网网站开发策划书
  • 预付做网站订金怎么做账seo运营工作内容
  • mvc网站开发之美Wordpress自建主题视频百度云下载
  • 做网站现在好弄么宁波网站建设xpckj
  • 生成短链接西安网站搜索引擎优化
  • 多少钱算网站好用的国外服务器
  • 郑州建站优化百度竞价排名是哪种方式
  • 网站的代运营双八网站建设
  • 网站建设 业务走下坡增城建设局网站
  • 网站托管服务 重庆问题不大工作室 网站
  • 怎样用文本建一个网站如何用word做简单的网站
  • 门户网站建设情况调研报告鞍山网站设计制作网站
  • 建网站无锡广州建设工程交易中心官网首页
  • 苏州网站建设极简幕枫网站开发毕业答辩
  • 商务网站建设 视频国外做油画的网站
  • 大型网站建设企业东莞常平二手房价最新消息
  • 邹平网站建设公司wordpress最近更新文章插件
  • 中介网站建设263邮箱登录入口官网