0

我有一个应用程序,我在其中维护文件中的序列化对象。当我尝试使用“adb 备份”进行备份时,我在框架中得到一个 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 之上被覆盖。

堆栈跟踪如下:

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)

通过对这个问题的一些研究,我从 Parcel.readException 中发现了这个 NullPointerException (等),但仅此而已。我已经使用相同的例程来备份不涉及序列化的文件而没有任何问题,这让我认为异常的原因与序列化有关。关于我可以从哪里开始寻找这个 NullPointerException 的任何线索?

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

4

0 回答 0