我有一个应用程序,我在其中维护文件中的序列化对象。当我尝试使用“adb backup”进行备份时,我在框架中获得了NULL指针异常。我假设我的代码有问题。
mFileOutputStream = mContext.openFileOutput(vfile, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(mFileOutputStream);
oos.writeObject( smsBackup );
oos.flush();
oos.close();
mFileOutputStream.close();
smsBackup是保存设备上所有消息副本的对象。据我所知,我对序列化对象的方式似乎没有问题。在发出adb备份时,控制转到
void onFullBackup(FullBackupDataOutput data){
BackupSMS smsBackup = new QualcommBackupSMS(this, SMS);
smsBackup.performBackup(); //Above snippet is implemented as part of this.
super.onFullBackup(data); //Exception is coming here.
}
此方法在BackupAgent之上被覆盖。
Stacktrace如下:
D/BackupServiceBinder(1268): java.lang.NullPointerException
D/BackupServiceBinder(1268): at android.os.Parcel.readException(Parcel.java:1467)
D/BackupServiceBinder(1268): at android.os.Parcel.readException(Parcel.java:1415)
D/BackupServiceBinder(1268): at android.os.storage.IMountService$Stub$Proxy.mkdirs(IMountService.java:750)
D/BackupServiceBinder(1268): at android.app.ContextImpl.ensureDirsExistOrFilter(ContextImpl.java:2160)
D/BackupServiceBinder(1268): at android.app.ContextImpl.getExternalFilesDirs(ContextImpl.java:856)
D/BackupServiceBinder(1268): at android.app.ContextImpl.getExternalFilesDir(ContextImpl.java:839)
D/BackupServiceBinder(1268): at android.content.ContextWrapper.getExternalFilesDir(ContextWrapper.java:210)
D/BackupServiceBinder(1268): at android.app.backup.BackupAgent.onFullBackup(BackupAgent.java:297)
D/BackupServiceBinder(1268): at com.qualcomm.backupagent.BackupAgent.onFullBackup(QualcommBackupAgent.java:79)
通过对这个问题的一些研究,我发现了NullPointerException (etc) from Parcel.readException,但仅此而已。我已经使用相同的例程来备份没有涉及序列化的文件而没有任何问题让我觉得异常的原因与序列化有某种关系。关于我可以从哪里开始寻找这个NullPointerException的任何线索?
PS:我花了很多时间试图找到代码中的异常原因,出于绝望,我在这里提出问题。万一有人认为我在没有给予公平斗争的情况下提出问题。