Java 在Android上使用ASyncTask读取带有Google Drive API的文件

Java 在Android上使用ASyncTask读取带有Google Drive API的文件,java,android,android-asynctask,google-drive-android-api,Java,Android,Android Asynctask,Google Drive Android Api,我在安卓设备上使用谷歌驱动API 我需要将Google Drive上的文件内容转换为字符串。简单地说 String dbData = driveObject.downloadFileToString("db_export.txt"); 我正在实现一个“GoogleDrive”对象。我需要在没有任务、线程和回调的情况下完成这项工作。然而,我做不到 下面是一个示例:我实现了一个名为“findFileByPath”的方法,该方法返回路径名作为参数的文件的文件ID。然而,安卓诸神已经强迫任何对它的调用

我在安卓设备上使用谷歌驱动API

我需要将Google Drive上的文件内容转换为字符串。简单地说

String dbData = driveObject.downloadFileToString("db_export.txt");
我正在实现一个“GoogleDrive”对象。我需要在没有任务、线程和回调的情况下完成这项工作。然而,我做不到

下面是一个示例:我实现了一个名为“findFileByPath”的方法,该方法返回路径名作为参数的文件的文件ID。然而,安卓诸神已经强迫任何对它的调用——因为它处理网络活动——发生在线程或异步任务中。问题是,任何等待任务完成的暂停都会导致GoogleDriveAPI线程暂停。所以……如果我这样做:

FindFileWithAsyncTask ffwat = new FindFileWithAsyncTask();
ffwat.execute(filePath);
File f = ffwat.get(5, TimeUnits.SECONDS);
在名为“FindFileWithAsyncTask”的异步任务中调用“findFileByPath”时,它只是挂起所有内容。只有当“get”超时时,googledriveapi才会继续

救命啊!必须有一种方法来做到这一点,可以避免——或者屏蔽——所有的异步B


有什么线索吗?谢谢

在使用网络服务时,很难摆脱异步任务,因为否则您的UI将冻结等待结果

尝试这样做:

new AsyncTask<String, Void, String>() {
        @Override
        protected String doInBackground(String... params) {
            String dbData = driveObject.downloadFileToString("db_export.txt");
            return dbData;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            File f = new File(s);
        }
    }.execute();
newasynctask(){
@凌驾
受保护的字符串doInBackground(字符串…参数){
String dbData=driveObject.downloadFileToString(“db_export.txt”);
返回dbData;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
文件f=新文件;
}
}.execute();
然后,您将等待onPostExecute方法的结果。
动态创建AsyncTask将减少枯燥的代码。

我的答案解决了您的问题吗?