2015-09-07 109 views
3

,因爲我在這個問題以前問:Clear parse installation cache on Android強制新解析安裝

我想刪除/清除我的Android手機上安裝解析當用戶退出應用程序的。我可以通過腳本從網上刪除解析安裝,然後我必須從手機上的內存/磁盤清除它。

我的問題是,我怎麼能強制解析庫觸發創建一個新的解析後安裝?

回答

1

我已經能夠使用Android的解析SDK 1.13.1

ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
Class clazz = installation.getClass(); 
Method[] methods = clazz.getDeclaredMethods(); 
Method method1 = clazz.getDeclaredMethod("getCurrentInstallationController"); 
method1.setAccessible(true); 
Object result = method1.invoke(installation); 

Method method2 = result.getClass().getDeclaredMethod("clearFromDisk"); 
method2.setAccessible(true); 
String result2=(String) method2.invoke(result); 

Method method3 = result.getClass().getDeclaredMethod("clearFromMemory"); 
method3.setAccessible(true); 
String result3=(String) method3.invoke(result); 

每次我的應用程序開始我檢查順利刪除「本地」 ParseInstallation緩存安裝是否可以被保存,如果它我不能重新創建另一個安裝。

這樣,根據您的用例可以安全地從parse-server中刪除安裝,My ParseInstallation僅保留對我的User對象的引用,以便查詢和發送推送通知。

final ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
     installation.put("user", ParseUser.getCurrentUser()); 
     installation.saveInBackground() 
       .continueWithTask(new Continuation<Void, Task<Void>>() { 
        @Override 
        public Task<Void> then(Task<Void> task) throws Exception { 
         if (task.isFaulted()) { 
          try { 
           ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
           Class clazz = installation.getClass(); 
           Method[] methods = clazz.getDeclaredMethods(); 
           Method method1 = clazz.getDeclaredMethod("getCurrentInstallationController"); 
           method1.setAccessible(true); 
           Object result = method1.invoke(installation); 

           Method method2 = result.getClass().getDeclaredMethod("clearFromDisk"); 
           method2.setAccessible(true); 
           String result2=(String) method2.invoke(result); 

           Method method3 = result.getClass().getDeclaredMethod("clearFromMemory"); 
           method3.setAccessible(true); 
           String result3=(String) method3.invoke(result); 

          } catch (Exception ex) { 
           ex.printStackTrace(); 
          } 
         } 
         return null; 
        } 
       }) 

希望這是一個毫無意義......