Ank*_*pli 5 android android-syncadapter
我有一个SyncAdapter,它在初始入门过程(登录/注册)期间被调用,该过程处理联系人以查找已经使用该系统的用户联系人.
当SyncAdapter运行时,应用程序在特定设备(Moto G)上几乎每次都被杀死(10次中有9次).
我最初的想法是,由于设备的可用RAM有限,应用程序正在被杀死.所以,我试着证实这个理论:
@Override
public void onPerformSync(Account account, Bundle extras, String authority,
ContentProviderClient provider, SyncResult syncResult) {
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) getContext()
.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long availableMegs = mi.availMem / 1048576L;
Log.d(TAG, "Available: " + availableMegs);
Log.d(TAG, "Low Memory: " + mi.lowMemory);
}
Run Code Online (Sandbox Code Playgroud)
事实证明RAM可能不是问题,因为日志看起来像这样:
03-09 11:38:34.444 19193-21339/mypackage.sandbox D/SyncAdapter: Available: 252
03-09 11:38:34.445 19193-21339/mypackage.sandbox D/SyncAdapter: Low Memory: false
Run Code Online (Sandbox Code Playgroud)
在日志中我发现了这个:
03-09 11:38:35.233 865-1610/? I/ActivityManager: Killing 19193:mypackage.sandbox/u0a579 (adj 0): depends on provider com.android.providers.contacts/.ContactsProvider2 in dying proc android.process.acore
Run Code Online (Sandbox Code Playgroud)
似乎应用程序被杀死,因为联系人应用程序/提供程序被杀死.
我不确定我在reddit上找到的这个帖子有多大相关性.
我认为可能的一种方式是,如果我可以推迟通知联系人已被修改.它会阻止联系人提供者启动并被杀死,反过来我的应用程序也不会被杀死.请参阅本答案的第7点.如果是这样,我该如何推迟通知?
我甚至确保通过不更改任何联系人来延迟向联系人发送通知.问题仍然存在.
任何帮助表示赞赏.谢谢
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |