×

ibinder em s

为什么servicemanager 获取ibinder?在电脑C:\Program Files\Common Files的文件可以删除吗

admin admin 发表于2022-06-11 12:55:01 浏览141 评论0

抢沙发发表评论

为什么servicemanager 获取ibinder


  如何通过反射方法获取com.android.internal.os.PkgUsageStats

  通过com.android.internal.os.PkgUsageStats这个类可以得到一个应用程序的启动次数,运行时间等信息,功能很强大。但是google并没有将这个类作为API接口提供给开发者,如果在android源码下开发,可以通过以下代码来使用这个类:

  import com.android.internal.app.IUsageStats;
  import com.android.internal.os.PkgUsageStats;

  //比较两个应用程序的启动次数和运行时间
  public final int compare(ApplicationInfo a, ApplicationInfo b) {
  ComponentName aName = a.intent.getComponent();
  ComponentName bName = b.intent.getComponent();
  int result = 0;
  //get usagestats service
  IUsageStats mUsageStatsService = IUsageStats.Stub
  .asInterface(ServiceManager.getService(“usagestats“));
  try {
  //get PkgUsageStats
  PkgUsageStats aStats = mUsageStatsService
  .getPkgUsageStats(aName);
  PkgUsageStats bStats = mUsageStatsService
  .getPkgUsageStats(bName);
  if(aStats!=null && bStats!=null) {
  if ((aStats.launchCount 》 bStats.launchCount)
  || ((aStats.launchCount == bStats.launchCount) && (aStats.usageTime 》 bStats.usageTime)))
  result = -1;
  else if ((aStats.launchCount 《 bStats.launchCount)
  || ((aStats.launchCount == bStats.launchCount) && (aStats.usageTime 《 bStats.usageTime)))
  result = 1;
  else {
  result = 0;
  }
  }else if(aStats!=null && bStats ==null) {
  result = -1;
  } else if(aStats==null && bStats !=null) {
  result = 1;
  }
  } catch (RemoteException e) {
  Log.i(“TAG“, “get package usage stats fail“);
  }

  return result;
  }

  那么如果想在sdk中使用这个 类要如果作呢--可以使用反射 的方法,代码如下:
  public final int compare(ApplicationInfo a, ApplicationInfo b) {
  
  ComponentName aName = a.intent.getComponent();
  ComponentName bName = b.intent.getComponent();
  int aLaunchCount,bLaunchCount;
  long aUseTime,bUseTime;
  int result = 0;
  
  try {
  
  //获得ServiceManager类
  Class ServiceManager = Class
  .forName(“android.os.ServiceManager“);
  
  //获得ServiceManager的getService方法
  Method getService = ServiceManager.getMethod(“getService“, java.lang.String.class);
  
  //调用getService获取RemoteService
  Object oRemoteService = getService.invoke(null, “usagestats“);
  
  //获得IUsageStats.Stub类
  Class cStub = Class
  .forName(“com.android.internal.app.IUsageStats$Stub“);
  //获得asInterface方法
  Method asInterface = cStub.getMethod(“asInterface“, android.os.IBinder.class);
  //调用asInterface方法获取IUsageStats对象
  Object oIUsageStats = asInterface.invoke(null, oRemoteService);
  //获得getPkgUsageStats(ComponentName)方法
  Method getPkgUsageStats = oIUsageStats.getClass().getMethod(“getPkgUsageStats“, ComponentName.class);
  //调用getPkgUsageStats 获取PkgUsageStats对象
  Object aStats = getPkgUsageStats.invoke(oIUsageStats, aName);
  Object bStats = getPkgUsageStats.invoke(oIUsageStats, bName);
  
  //获得PkgUsageStats类
  Class PkgUsageStats = Class.forName(“com.android.internal.os.PkgUsageStats“);
  
  aLaunchCount = PkgUsageStats.getDeclaredField(“launchCount“).getInt(aStats);
  bLaunchCount = PkgUsageStats.getDeclaredField(“launchCount“).getInt(bStats);
  aUseTime = PkgUsageStats.getDeclaredField(“usageTime“).getLong(aStats);
  bUseTime = PkgUsageStats.getDeclaredField(“usageTime“).getLong(bStats);
  
  if((aLaunchCount》bLaunchCount)||
  ((aLaunchCount == bLaunchCount)&&(aUseTime》bUseTime)))
  result = 1;
  else if((aLaunchCount《bLaunchCount)||((aLaunchCount ==
  bLaunchCount)&&(aUseTime《bUseTime)))
  result = -1;
  else {
  result = 0;
  }

  } catch (Exception e) {
  Log.e(“###“, e.toString(), e);
  }

  return result;
  }

在电脑C:\Program Files\Common Files的文件可以删除吗


不能删除计算机上C:\ Program Files \ Common Files中的文件。 在这里,存储着将用于安装应用程序软件的公共库文件。

“Common Files”文件还包括操作系统的系统程序和应用程序,是一个应用程序运行时文件,存储了许多相关的数据库,涵盖了1,000多个有用的应用程序的插件,补丁程序等,其内的子文件夹是相关的应用程序。-em

因此,C:\Program Files\Common Files的文件是不能删除的,否则会引起系统异常。

扩展资料:

c盘瘦身的方法如下:

1、首先,打开“此电脑”,如下图所示。

2、其次,右键单击c盘,选择“属性”,如下图所示。

3、接着,点击“磁盘清理”按钮,如下图所示。

4、最后,在新窗口中点击“确定”按钮即可,如下图所示。这样,系统就开始自动清理磁盘,达到c盘瘦身的目的。


WindowsImageBackup是什么文件有54G可以删除吗


这是系统镜像备份文件,可以删除。
如果想用一键还原等功能的话,建议自己安装一个系统还原,并且备份系统,一般来说备份一次就够了,经常备份的话占磁盘空间太大了,而且没必要。
需要提醒你的是,系统备份文件有可能被锁定,这时候用强制删除工具可以删除,或者在PE系统中删除。
-s