作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在最新的 Android 记事本教程中找到了这段代码 fragment link它使用 contentprovider 并实现 PipeDataWriter。
该接口(interface)有其方法 writeDataToPipe,他们是这样实现的:
@Override
public void writeDataToPipe(ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts, Cursor c) {
// We currently only support conversion-to-text from a single note entry,
// so no need for cursor data type checking here.
FileOutputStream fout = new FileOutputStream(output.getFileDescriptor());
PrintWriter pw = null;
try {
pw = new PrintWriter(new OutputStreamWriter(fout, "UTF-8"));
pw.println(c.getString(READ_NOTE_TITLE_INDEX));
pw.println("");
pw.println(c.getString(READ_NOTE_NOTE_INDEX));
} catch (UnsupportedEncodingException e) {
Log.w(TAG, "Ooops", e);
} finally {
c.close();
if (pw != null) {
pw.flush();
}
try {
fout.close();
} catch (IOException e) {
}
}
}
我的疑问是为什么他们专门使用 PipeDataWriter?
这是某种设计模式吗?
我没有发现其他来源使用过它。为什么会这样?
最佳答案
why specifically they are using PipeDataWriter?
他们在 openTypedAssetFile()
的实现中使用了 openPipeHelper()
。 openPipeHelper()
将 PipeDataWriter
作为参数。在他们的例子中,他们在 NotePadProvider
本身上实现了 PipeDataWriter
,因此需要实现 openPipeHelper()
来实现 所需的契约(Contract)>PipeDataWriter
接口(interface)。
PipeDataWriter
和 openPipeHelper()
是 API 级别 11 的新功能。以前,您必须推出自己的解决方案来 fork 线程以返回文件的内容。
关于java - 了解 writeDataToPipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719896/
我在最新的 Android 记事本教程中找到了这段代码 fragment link它使用 contentprovider 并实现 PipeDataWriter。 该接口(interface)有其方法
我是一名优秀的程序员,十分优秀!