Android 开启远程Service对Application的影响

Android 开启远程Service对Application的影响

正常情况下,整个android应用程序的application的onCreate方法只会在程序运行的时候执行一次,但是也有特殊情况,那就是在应用中开启了远程服务,远程服务运行在一个单独的进程当中,这个时候application的onCreate方法会被重复调用。很多时候我们希望Application中初始化方法只执行一次,因此就要进行一下判断,判断Application的onCreate方法执行是不是因为开启了远程服务。

判断的原理是通过进程id获取进程的名称,如果进程的名称和当前应用报名不一致,那么就是远程服务的进程,默认情况下主进程的名称就是应用的包名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private  String getAppName( int  pID) {
         String processName =  null ;
         ActivityManager am = (ActivityManager)  this .getSystemService(ACTIVITY_SERVICE);
         List<RunningAppProcessInfo> runningAppProcessInfos = am.getRunningAppProcesses();
         Iterator<RunningAppProcessInfo> i = runningAppProcessInfos.iterator();
         while  (i.hasNext()) {
             ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
             try  {
                 if  (info.pid == pID) {
                     processName = info.processName;
                     return  processName;
                 }
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
         return  processName;
     }

  通过 android.os.Process.myPid()可以获取到进程的id,通过上面的方法就可以获取到进程的名称。

远程服务的进程名称是由AndroidManifest.xml 文件中service标签下的 android:process属性来决定的。经过测试此名称必须以.开头 名称可以自己定 通过上面方法得到的远程服务的名称就是.+名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值