设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间01 现在时间01 缓存数据 当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

当你走完一段之后回头看,你会发现,那些真正能被记得的事真的是没有多少,真正无法忘记的人屈指可数,真正有趣的日子不过是那么一些,而真正需要害怕的也是寥寥无几。

查看: 1517|回复: 1

android 预加载进程的实现方法

[复制链接]

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
19
主题
17
精华
0
金钱
63
积分
36
注册时间
2023-9-30
最后登录
2025-2-17

发表于 2024-11-26 20:53:36 | 显示全部楼层 |阅读模式
目录


  • 一.背景
  • 二.实现

    • 1. 创建预加载服务类
    • 2.清单文件中注册并制定
    • 3.开启和停止


一.背景

做阅读器独立进程时,打开阅读器阅读页面所在的
  1. Activity
复制代码
,会出现白屏或黑屏
也就是说从一个进程
  1. activity
复制代码
跳转另一个进程的
  1. activity
复制代码
,会出现白屏或黑屏
,因为打开独立进程会重新fork,耗时比较长,所以解决思路是
在跳转之前,预加载进程,从而避免启动进程的时间
选择看不见的组件进行预加载,如
  1. Service
复制代码
、广播

二.实现


1. 创建预加载服务类
  1. public class PreloadProgressService extends Service {
  2.     @Nullable
  3.     @Override
  4.     public IBinder onBind(Intent intent) {
  5.         return null;
  6.     }
  7. }
复制代码
2.清单文件中注册并制定
  1. android:process
复制代码
要预加载的进程
  1. <service
  2.     android:name=".ui.service.PreloadProgressService"
  3.     android:exported="true"
  4.     android:process=":eink"
  5.     />
复制代码
3.开启和停止

a.开启预加载进程
  1. private void startPreloadProgressService() {
  2.     if(!ReaderUtils.isServiceStart(PreloadProgressService.class)){
  3.         Intent intent = new Intent(requireActivity(), PreloadProgressService.class);
  4.         requireActivity().startService(intent);
  5.     }
  6. }
复制代码
b.停止预加载进程
  1. private void stopPreloadProgressService(){
  2.     if(ReaderUtils.isServiceStart(PreloadProgressService.class)){
  3.         Intent intent = new Intent(requireActivity(), PreloadProgressService.class);
  4.         requireActivity().stopService(intent);
  5.     }
  6. }
复制代码
c.进程是否开启过判断
  1. public static boolean isServiceStart(Class<?> serviceClass) {
  2.     ActivityManager manager = (ActivityManager) BaseApp.mApp.getSystemService(BaseApp.mApp.ACTIVITY_SERVICE);
  3.     for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
  4.         if (serviceClass.getName().equals(service.service.getClassName())) {
  5.             return true;
  6.         }
  7.     }
  8.     return false;
  9. }
复制代码
到此这篇关于android 预加载进程的文章就介绍到这了,更多相关android 预加载进程内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2025-12-6 01:08:14 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表