2012-01-19 8 views
20

मेरे एंड्रॉइड ऐप में कुछ डेटा हैं जो मैं बैकअप और पुनर्स्थापित करना चाहता हूं। उस उद्देश्य के लिए मैंने BackupAgent का एक कस्टम कार्यान्वयन बनाया है।ऑनस्टोर मेरे कस्टम बैकअप के लिए नहीं बुलाया गया

में बैकअप एजेंट को शामिल किया है मेरी प्रकट में आप नीचे

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    android:installLocation="auto" 
    package="com.myapp" 
    android:versionCode="14" 
    android:versionName="1.13" > 

    <application 
     android:backupAgent="com.myapp.MyBackupAgent"> 

     <meta-data 
      android:name="com.google.android.backup.api_key" 
      android:value="my key" /> 

मैं बैकअप सेवा api कुंजी को शामिल किया है देखने के रूप में कर सकते हैं, हालांकि मैं एमुलेटर (Android 2.2) के साथ परीक्षण कर रहा हूँ और यह नहीं होना चाहिए आवश्यक है, क्योंकि यह स्थानीय बैकअप परिवहन का उपयोग करता है।

आदेश बैकअप का परीक्षण करना और बहाल मैंने किया है निम्नलिखित करने के लिए:

  • एमुलेटर शुरू अपने आवेदन के साथ स्थापित किया।
  • बैकअप

    adb शेल bmgr सच

  • कॉल मेरे कोड का हिस्सा सक्षम सक्षम थे BackupManager कक्षा में dataChanged विधि कहा जाता है।

  • मैन्युअल बैकअप आपरेशन

    adb शेल bmgr चलाने

  • लॉग कि अपने कस्टम BackupAgent की onBackup विधि बुलाया गया था चेक इन आरंभ करें।

  • एप्लिकेशन अनइंस्टॉल करें
  • एप्लिकेशन पुनर्स्थापित लॉग में
  • चेक अगर onRestore विधि कहा जाता है।

बात यह है कि ऑनरस्टोर विधि को नहीं कहा जाता है और मुझे नहीं पता कि क्यों। एप को पुनर्स्थापित करने या मैन्युअल रूप से एडब के साथ पुनर्स्थापित करने के बाद मैं कंसोल में निम्नलिखित देखता हूं।

$adb shell bmgr restore com.myapp 
restoreStarting: 2 packages 
restoreFinished: 0 
done 

और लॉग में यह अन्य

D/AndroidRuntime(8259): 
D/AndroidRuntime(8259): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 
D/AndroidRuntime(8259): CheckJNI is ON 
D/AndroidRuntime(8259): --- registering native functions --- 
D/BackupManagerService( 59): MSG_RUN_RESTORE [email protected] 
V/LocalTransport( 59): start restore 1 
V/LocalTransport( 59): nextRestorePackage() = @[email protected] 
V/LocalTransport( 59): getRestoreData() found 7 key files 
V/LocalTransport( 59):  ... key=com.android.providers.settings size=1208 
V/LocalTransport( 59):  ... key=com.myapp size=501 
V/LocalTransport( 59):  ... key=android size=1208 
V/LocalTransport( 59):  ... key=com.android.providers.userdictionary size=1208 
V/LocalTransport( 59):  ... key=com.android.browser size=1208 
V/LocalTransport( 59):  ... key=com.android.inputmethod.latin size=1208 
V/LocalTransport( 59):  ... [email protected]@ size=11 
V/LocalTransport( 59): no more packages to restore 
V/LocalTransport( 59): finishRestore() 
V/LocalTransport( 59): finishRestore() 
D/AndroidRuntime(8259): Shutting down VM 

लेकिन मैं नहीं दिख रहा है बस इसे की शुरुआत में है कि onRestore करने के लिए कॉल वास्तव में किया जाता है (मैं कुछ प्रवेश बयान है?

क्या यह कभी आपके साथ हुआ है? क्या 0Rमें भी 0Rकहा जाता है, पर भी कोई कारण नहीं है?

+2

मैंने सैमसंग गैलेक्सी नेक्सस, एक उचित फोन के साथ भी कोशिश की। मैंने स्वयं को यह सुनिश्चित कर लिया है कि मेरे पास बैकअप सक्षम है, जैसा कि निम्न लिंक में वर्णित है: http://support.verizonwireless.com/clc/devices/knowledge_base.html?id=51309 और मैं इसे लॉग में देखता हूं 'डब्ल्यू/बैकअप मैनेजर सेवा (1 9 6): बैकअप पास लेकिन ई = सच्चा पी = झूठा ', जिसका अर्थ है सक्षम है लेकिन प्रावधान नहीं है। यह प्रावधान क्यों नहीं है? – mollymay

+1

मुझे आज यह समस्या मिली। ऑनबैक अपवाद के बिना सफलतापूर्वक बुलाया गया लेकिन ऑनस्ट को फिर से इंस्टॉल करते समय रीस्टोर नहीं कहा जाता है। क्या आपको कारण पता चला? धन्यवाद! – Loc

उत्तर

1

मेरे अनुभव में, कुछ अजीब कारण (जो मुझे अभी तक पहचान नहीं है), बैकअपएपेंट में किए गए लॉगिंग कथन लॉग में दिखाई नहीं देते हैं। फिर भी, मैं पुष्टि करने में सक्षम हूं कि ऑनस्टोर विधि वास्तव में ठीक से चल रहा है।

आपके प्रश्न में आप इंगित करते हैं कि ऑनस्टोर विधि "को प्रतीत नहीं होता है" क्योंकि आप उचित लॉग देखने में असमर्थ हैं। क्या आप इसकी पुष्टि कर सकते हैं कि परिणाम विफल हो रहा है (यानी वह डेटा जिसे ठीक से बहाल किया जाना चाहिए) नहीं है?

+0

सच है। मुझे लगता है कि ओपी को यह जांचना चाहिए और वापस आना चाहिए। –

+0

मेरे अनुभव में, एंड्रॉइड 5 में, लॉगिंग स्टेटमेंट्स को कॉल किया जाता है लेकिन डीबग ब्रेकपॉइंट्स ट्रिगर नहीं होते हैं। ऐसा लगता है कि डीबगर कनेक्ट होने से पहले पुनर्स्थापना प्रक्रिया चलती है। इससे ऐप का परीक्षण करते समय क्या हो रहा है इसके बारे में कुछ भ्रम पैदा हो सकता है। – arlomedia

1

मुझे यह समस्या थी और मूल कारण यह था कि मेरे पास बैकअप में इसे पूरा करने से रोकने में एक बग था, इसलिए बैकअप को बुलाया गया था लेकिन रेस्टोर नहीं था।रेस्टोर पर होने वाले बैकअप पर अपवाद को ठीक करना।

इसके अलावा लॉग इन संदेश लॉग ऑन करें और ऑनस्टोर लॉग में दिखाई देते हैं। यदि आप "बैकअप" टैग पर लॉग फ़िल्टर सेट करते हैं और अपने लॉग टैग के लिए बैकअप के साथ कुछ उपयोग करते हैं। आप सिस्टम और आपके से लॉगिंग देखेंगे। है मेरी कोड में लॉग संदेश onBackup कहा जाता है: यहाँ क्या मैं ऊपर लॉग com.catglo.sellpr मेरे ऐप से है और लाइन है कि com.catglo.sellpr मैं/बैकअप पढ़ता में

09-08 17:06:56.581  294-352/system_process V/BackupServiceBinder﹕ doBackup() invoked 
09-08 17:06:56.591  294-352/system_process D/PerformBackupTask﹕ starting agent for backup of BackupRequest{pkg=android} 
09-08 17:06:56.591  294-352/system_process D/BackupManagerService﹕ awaiting agent for ApplicationInfo{40d5efc0 android} 
09-08 17:06:56.591  294-308/system_process D/BackupManagerService﹕ agentConnected pkg=android [email protected]8 
09-08 17:06:56.601  294-352/system_process V/BackupServiceBinder﹕ doBackup() invoked 
09-08 17:06:56.601  294-352/system_process D/BackupHelperDispatcher﹕ handling existing helper 'wallpaper' [email protected] 
09-08 17:06:56.621  294-352/system_process D/PerformBackupTask﹕ starting agent for backup of BackupRequest{pkg=com.catglo.sellpr} 
09-08 17:06:56.661  294-352/system_process D/BackupManagerService﹕ awaiting agent for ApplicationInfo{41074748 com.catglo.sellpr} 
09-08 17:06:56.781  294-514/system_process D/BackupManagerService﹕ agentConnected pkg=com.catglo.sellpr [email protected] 
09-08 17:06:56.791 2263-2274/com.catglo.sellpr V/BackupServiceBinder﹕ doBackup() invoked 
09-08 17:06:56.791 2263-2274/com.catglo.sellpr I/backup﹕ onBackup called 
09-08 17:06:57.251  294-352/system_process I/PerformBackupTask﹕ Backup pass finished. 

मिलता है । onRestore के लिए मैं

09-08 17:13:34.431  294-352/system_process D/BackupManagerService﹕ MSG_RUN_RESTORE [email protected] 
09-08 17:13:34.511  294-352/system_process V/BackupServiceBinder﹕ doRestore() invoked 
09-08 17:13:34.561  294-352/system_process D/BackupManagerService﹕ awaiting agent for ApplicationInfo{41074748 com.catglo.sellpr} 
09-08 17:13:34.561  294-427/system_process D/BackupManagerService﹕ agentConnected pkg=com.catglo.sellpr [email protected] 
09-08 17:13:34.571 2263-2276/com.catglo.sellpr V/BackupServiceBinder﹕ doRestore() invoked 
09-08 17:13:34.571 2263-2276/com.catglo.sellpr I/backup﹕ onRestore called 

इससे पहले मैं onBackup में एक अपवाद था और onRestore से मेरी लॉग कहा जाता है कभी नहीं गया था, लेकिन सिस्टम को पुनर्स्थापित करने संबंधित संदेश थे मिलता है।

बैकअप बैकअप में अपवाद के कारण फोर्स बंद नहीं होगा।

संबंधित मुद्दे