在API级别18

时间:2015-09-22 10:52:54

标签: android android-contentprovider

背景:

我想知道在我停止之后谁启动了acore进程,并在进程中调用了明确的数据。

日志:

  

Sep 12 18:50:08 localhost 172.16.4.165 ANDROID:+05:30 2015 000 0 |   09-12 18:49:48.630 I / ActivityManager(3304):启动proc   android.process.acore用于内容提供者   com.android.providers.contacts / .ContactsProvider2:pid = 4805 uid = 10022   gids = {50022,1028}

日志中没有任何其他内容可以指向启动过程的内容。 acore进程也有其他提供程序,但上面的日志会将其缩小到ContactsProvider2

问题:

当清理仍在进行时,该过程开始,这会导致数据库损坏。

我已尝试过的内容:

  1. How to find out a calling activity for content provider in Android? 这有API级别19及以上的解决方案。但我的设备有API级别18

  2. 我在Binder.getCallingPid()中试用onCreate()这会返回自我PID

  3. 我通常直接在"服务"中使用的getCallingPid()getCallingUid()方法。不适用于" ContentProvider"

1 个答案:

答案 0 :(得分:0)

最后,这是我为那些感兴趣的人所做的。对于低于19的API级别,如果不修改框架,我找不到任何方法。

以下是我对ActivityManagerService.java的补丁,它帮助了我。

<b:else/>