- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在考虑使用自 Android 2.2 以来可用的新备份 API,但需要保持向后兼容性(准确地说是 1.5)。
文档状态:
The backup service and the APIs you must use are available only on devices running API Level 8 (Android 2.2) or greater, so you should also set your android:minSdkVersion attribute to "8". However, if you implement proper backward compatibility in your application, you can support this feature for devices running API Level 8 or greater, while remaining compatible with older devices.
我确实是针对level 8 targetSdkVersion
和level 3 minSdkVersion
构建的,并尝试使用包装类(带反射)来克服应用程序无法运行的问题如果您实现的类扩展了不存在的类。
这就是问题所在:因为我们自己没有对 BackupHelper
类进行实际调用,所以我们无法预先检查该类是否确实存在。 (正如 Android 向后兼容性文档中使用 checkAvailable()
方法所解释的那样。)因此,该类将被实例化并转换为 BackupAgent
。但是由于我们使用反射,它实际上并没有覆盖 BackupAgent 并且在请求备份时在运行时发生异常:
java.lang.RuntimeException: Unable to create BackupAgent org.transdroid.service.BackupAgent: java.lang.ClassCastException: org.transdroid.service.BackupAgent
这是我实现向后兼容的 BackupAgent
的方法:http://code.google.com/p/transdroid/source/browse/#svn/trunk/src/org/transdroid/service其中 BackupAgent.java 是“常规”BackupAgentHelper 扩展类,BackupAgentHelperWrapper 是基于反射的包装类。
有人成功实现了具有向后兼容性的 BackupAgent
吗?
最佳答案
作为替代方案,您可以只使用纯反射来与 BackupManager 对话:
public void scheduleBackup() {
Log.d(TAG, "Scheduling backup");
try {
Class managerClass = Class.forName("android.app.backup.BackupManager");
Constructor managerConstructor = managerClass.getConstructor(Context.class);
Object manager = managerConstructor.newInstance(context);
Method m = managerClass.getMethod("dataChanged");
m.invoke(manager);
Log.d(TAG, "Backup requested");
} catch(ClassNotFoundException e) {
Log.d(TAG, "No backup manager found");
} catch(Throwable t) {
Log.d(TAG, "Scheduling backup failed " + t);
t.printStackTrace();
}
}
将 android:backupAgent 直接指向 v2.2 类;它永远不会加载到 v2.2 之前的 VM 上,因此不会有任何链接问题。
关于android - 向后兼容的 BackupAgent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3083175/
list : 代码: public class PrefsBackupAgent extends BackupAgentHelper { @Override public
我正在查看 AndroidManifest 文件,我看到了 android:backupAgent 的条目,根据文档 android:backupAgent 是 The name of the cla
我正在尝试实现自定义 backupAgentHelper 来备份我的应用程序的数据库文件。我已经多次浏览文档,但每当我尝试强制备份时,Create/onBackup/onRestore 上的 back
我正在考虑使用自 Android 2.2 以来可用的新备份 API,但需要保持向后兼容性(准确地说是 1.5)。 文档状态: The backup service and the APIs you m
我正在尝试让 BackupAgent 工作,但我无法让它工作。这是我的示例代码: 布局只是一个 TextView 和一个 Button。 主要 Activity : ... public st
我有一个使用备份功能的应用程序。这是我的 list 中的一行: android:backupAgent="my.package.backup.BackupAgent" 它在当前版本中运行良好。但现在我
我想要备份和恢复我的 Android 应用程序中的一些数据。为此,我创建了 BackupAgent 的自定义实现。 在我的 list 中包含了备份代理,如下所示 我已经包
我已经根据文档实现了 BackupAgentHelper,包括向后兼容 1.6,以备份我所有的 SharedPreferences。在模拟器 Android 2.2 中测试它时以及在我的设备上运行时,
我在这里看到了几个示例,但没有一个是专门针对备份 SQLite 数据库的,有人有这样做的示例吗? http://www.microdu.com/docs/guide/topics/data/backu
我正在测试我的自定义 BackupAgent。下面是我在Simulator & Eclipse ADT中的测试 使用命令 ---- WORK WELL 测试 1 备份和恢复 启用 adb shell
我查看了文档和示例 BackupRestore 应用程序,并编写了我自己的测试应用程序来实现 android:backupAgent。我扩展了 BackupAgent 类,因为我主要关心的是能够从数据
我是一名优秀的程序员,十分优秀!