Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-谷歌硬盘SDK-完成事件_Android_Events_Google Drive Api - Fatal编程技术网

Android-谷歌硬盘SDK-完成事件

Android-谷歌硬盘SDK-完成事件,android,events,google-drive-api,Android,Events,Google Drive Api,我是Android Google Drive SDK的新手,所以我已经实现了一个服务来接收完成事件,以便在上传文件后保存我在用户驱动器中创建的文件的DriveId 这是我用来上传文件的代码,请注意,如果原始文件在被放入google drive sdk请求后被请求,我会删除它: ExecutionOptions executionOptions = new ExecutionOptions.Builder() .setNotifyOnCompletion(true)

我是Android Google Drive SDK的新手,所以我已经实现了一个服务来接收完成事件,以便在上传文件后保存我在用户驱动器中创建的文件的
DriveId

这是我用来上传文件的代码,请注意,如果原始文件在被放入google drive sdk请求后被请求,我会删除它:

ExecutionOptions executionOptions = new ExecutionOptions.Builder()
            .setNotifyOnCompletion(true)
            .setTrackingTag(documentFileId)
            .build();

driveFileResult.getDriveFile()
         .open(mGoogleApiClient, DriveFile.MODE_READ_WRITE, null)
         .setResultCallback(result -> {

            DriveContents driveContents = result.getDriveContents();
            driveContents.commit(mGoogleApiClient, null, executionOptions)
                    .setResultCallback(status -> {
                        if (!status.isSuccess()) {
                            // handle bad status
                            return;
                        }

                        // Once the file has been passed to google drive it should be deleted
                        // if the delete extra parameter was passed
                        if (isFileDeletable && file != null) {
                            if (file.exists()) file.delete();
                        }
                        hideNotification();
                    });
        });
这里是完成事件的服务代码

public class UploadCompletionService extends DriveEventService {

    @Override
    public void onCompletion(CompletionEvent completionEvent) {
        String driveId = completionEvent.getDriveId().getResourceId();
        // THE LOGIC GOES HERE
        completionEvent.dismiss();
    }
}
所以问题是频率,我上传一个文件,然后立即得到事件,然后我创建第二个文件,事件需要更长的时间来检索成功,然后两个或更多的文件之后,事件不再被调用

我想知道问题是否与从驱动器内容中获取结果回调时删除文件有关,或者是否有必要确保关闭或释放计数中没有的资源,或者在获得完成事件之前删除本地文件不是一个好主意。我做错了什么


提前感谢。

请仔细检查您的代码是如何工作的,特别是您的代码必须如何按照要求运行。在关于处理文件内容的文档中,讨论了如何读取文件、如何从输入流中读取文件以及关闭文件内容。检查如何关闭文件内容;使用完文件内容后,正确关闭文件内容,以释放相关资源。希望这有帮助!我想我已经尝试了那里的一切,尽管我不确定现在发生了什么。我已经使用Api一周了,所以在学习到个人设备Play Store服务崩溃时犯了很多错误。我必须恢复默认值,然后一切正常。这个应用程序又正常工作了,所以我想它已经修复了。我不确定它是否是真的固定的,这就是我还没有结束这个问题的原因,因为可能有一些我仍然忽略的东西。无论如何,谢谢你的建议。我目前也在做这件事,结果好坏参半——有时我会得到一个即时完成事件,而其他人则一无所获。对我来说,这需要完美的工作,每一次不是间歇性的,所以我会让你知道我的发现!试着仔细检查代码是如何工作的,特别是您的代码的行为必须符合。在关于处理文件内容的文档中,讨论了如何读取文件、如何从输入流中读取文件以及关闭文件内容。检查如何关闭文件内容;使用完文件内容后,正确关闭文件内容,以释放相关资源。希望这有帮助!我想我已经尝试了那里的一切,尽管我不确定现在发生了什么。我已经使用Api一周了,所以在学习到个人设备Play Store服务崩溃时犯了很多错误。我必须恢复默认值,然后一切正常。这个应用程序又正常工作了,所以我想它已经修复了。我不确定它是否是真的固定的,这就是我还没有结束这个问题的原因,因为可能有一些我仍然忽略的东西。无论如何,谢谢你的建议。我目前也在做这件事,结果好坏参半——有时我会得到一个即时完成事件,而其他人则一无所获。对我来说,这需要完美的工作,每一次不是间歇性的,所以我会让你知道我的发现!