码迷,mamicode.com
首页 > 移动开发 > 详细

Android中Application的onCreate多次调用问题

时间:2015-05-27 12:17:35      阅读:635      评论:0      收藏:0      [点我收藏+]

标签:android   application   

1 问题描述:一个android应用需要为一个service单独开一个进程以完成与服务器交互的逻辑,同时在Application对象的onCreate方法中会执行对象的初始化操作,最主要的是有一个轮询线程,经测试发现,应用耗电十分严重。经过测试发现,是service的进程中也跑着那个轮询线程,这样在网络环境不好的情况下,频繁的请求网络激活设备,会损耗大量的电量;


2 问题原因:每个android应用都要运行在一个虚拟机上,当应用配置了两个进程时,其实是有两个虚拟机在运行,一个前台的应用进程,一个service后台进程,每个进程对应一个application对象,所以当应用配置了多个进程的时候,application对象的onCreate方法就会执行多次,所以如果在application的onCreate方法中开启轮询或者初始化大量数据时,其实是要做出区分的处理的;


3 解决问题:我们已经知道每个进程对应一个application对象,为了避免浪费资源,我们可以在application中通过进程的名称来区分具体应该加载哪些资源,执行哪些具体逻辑。

获取进程名称的方法:

    private String getCurProcessName(Context context) {
        int pid = android.os.Process.myPid();
        ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
        for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
            if (appProcess.pid == pid) {
                return appProcess.processName;
            }
        }
        return "";
    }

Android中Application的onCreate多次调用问题

标签:android   application   

原文地址:http://blog.csdn.net/peidonghui/article/details/46043943

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!