Java 序列化对象备份问题-Android

Java 序列化对象备份问题-Android,java,android,serialization,android-framework,Java,Android,Serialization,Android Framework,我有一个在文件中维护序列化对象的应用程序。当我尝试使用adb备份进行备份时,我在框架中得到一个空指针异常。我假设我的代码有问题 mFileOutputStream = mContext.openFileOutput(vfile, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(mFileOutputStream); oos.writeObject( smsBackup ); oos.flush();

我有一个在文件中维护序列化对象的应用程序。当我尝试使用adb备份进行备份时,我在框架中得到一个空指针异常。我假设我的代码有问题

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,有什么线索吗


PS:我花了很多时间试图在代码中找到异常的原因,出于绝望,我在这里提出了这个问题。以防万一,有人认为我是在不公平地提出问题

那么,如果删除onFullBackup方法中的额外代码是否有效?@corsair992是的,它可以工作,但我没有做我打算做的事情,即进行备份。在尝试修复此问题的多次尝试后,我发现无论我是否使用序列化,问题仍然存在。这个问题可能与此有关,我终于知道了问题的原因。我在没有SD卡映像的模拟器上运行此应用程序。显然,它试图在那里写些东西,尽管这不是我的意图。使用SD卡映像创建虚拟设备后,此问题得到解决。