我已經設置瞭解析和推送通知工作得很好。從解析安裝表中刪除一行從android
我想要實現的是刪除一個包含舊的'installationId'的行(安裝實例)。當重新安裝應用程序時,會生成一個新的installationId,並且在將新的installationId保存在我自己的服務器中之後,我希望android設備從包含舊ID的parse db中刪除行。
我已經按照兩個教程:
ⅰ)Delete a row from Parse Table ⅱ)https://www.parse.com/questions/delete-row
代碼 - (根據第一教程):
ParseQuery<ParseObject> query = ParseQuery.getQuery("Installation");
query.whereEqualTo("installationId", "9702fcb1-5912-43fa-9248-5f18bd398485");
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
try {
parseObject.delete();
parseObject.saveEventually();
}catch(ParseException ex){
ex.printStackTrace();
}
}
});
錯誤(logcat的):
4052-4052/com.pbc.pchakraverti.enotice E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.pbc.pchakraverti.enotice, PID: 4052
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.parse.ParseObject.delete()' on a null object reference
at com.example.pchakraverti.enotice.clgIdVerificationActivity$1.done(clgIdVerificationActivity.java:68)
at com.example.pchakraverti.enotice.clgIdVerificationActivity$1.done(clgIdVerificationActivity.java:64)
at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:107)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
碼 - 根據解析文檔:
ParseObject.createWithoutData("Installation", "IHgT4Gbszs").deleteEventually();
在這種情況下,沒有異常,但該行沒有被刪除!
我針對'安裝'類的解析。
更新
ParseQuery<ParseInstallation> query = ParseInstallation.getQuery();
query.whereEqualTo("installationId", "9702fcb1-5912-43fa-9248-5f18bd398485");
query.getFirstInBackground(new GetCallback<ParseInstallation>() {
@Override
public void done(ParseInstallation parseInstallation, ParseException e) {
try {
parseInstallation.delete();
parseInstallation.saveInBackground();
}catch(ParseException ex){
ex.printStackTrace();
}
}
});
此代碼運行沒有問題,但該條目不會從解析服務器中刪除。
在我沒有那麼好的經驗(wiith解析),我已經看到需要時間來反映一些變化。這顯然不能回答您的問題,但建議您嘗試等待一段時間才能顯示更改,除非您已有。 – SlashG
請記住!但現在沒有機會! – Priyabrata
你可以試着用回調來保存(我希望他們仍然有這個功能)並記錄事件。您將知道保存行/更新/刪除的代碼是否已成功完成。 – SlashG