我正在研究使用自Android 2.2以來可用的新備份API,但需要保持向後兼容性(確切爲1.5)。向後兼容BackupAgent
的文檔狀態:
備份服務,你必須使用的API僅適用於運行API等級8(安卓2.2)或更高版本的設備,所以你也應該設置你的安卓的minSdkVersion屬性「8」。但是,如果您在應用程序中實現了適當的向後兼容性,則可以爲運行API Level 8或更高級別的設備支持此功能,同時保持與舊設備的兼容性。
我確實築起了8級水平,並嘗試使用一個包裝類(反射)克服,如果你實現擴展一個不存在的類一類的應用程序將無法運行的問題。
以下是問題所在:由於我們自己並沒有實際調用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
向後兼容?
我相信有一說起今年的Barcamp在Droidcon這樣做。不記得這個人的名字,但值得有一個搜索。 – 2010-06-22 11:02:40