我有一个很难理解的区别ACTION_OPEN_DOCUMENT和ACTION_GET_CONTENT意图时,他们被用来打开可打开的文档.如果我在KitKat之前支持Andriod,那ACTION_OPEN_DOCUMENT我不支持,我应该和我一起解决ACTION_GET_CONTENT吗?
该文件说,这:
ACTION_OPEN_DOCUMENT不打算替代ACTION_GET_CONTENT.您应该使用的那个取决于您的应用程序的需求:
- 使用
ACTION_GET_CONTENT如果你希望你的应用程序只需读取/导入数据.使用此方法,应用程序将导入数据的副本,例如图像文件.- 使用
ACTION_OPEN_DOCUMENT,如果你希望你的应用,以获得长期,持续的访问由文件提供者所拥有的文件.一个例子是照片编辑应用程序,它允许用户编辑存储在文档提供程序中的图像.
ACTION_GET_CONTENTKitKat中是否也使用文档提供程序?什么会阻止我"长期,持久访问",这究竟是什么意思?
基本上,以下两个片段之间的区别是什么?
ACTION_GET_CONTENT
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
Run Code Online (Sandbox Code Playgroud)
ACTION_OPEN_DOCUMENT
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
Run Code Online (Sandbox Code Playgroud) 我有一个网站,有一个单独的静态文件子域。我发现我需要设置Access-Control-Allow-Origin标题才能使某些 AJAX 功能正常工作,特别是字体。我希望能够访问静态子域以localhost进行测试以及www子域。简单的解决方案似乎是Access-Control-Allow-Origin: *。我的服务器使用 nginx。
什么是主要的原因,你可能不希望使用通配符为Access-Control-Allow-Origin您的响应头?
我有ListView一个CursorLoader.用户可以打开ListView项目(打开另一个Fragment项目)或删除项目.所有数据库操作都是异步发生的,通常只需要几分之一秒.但从技术上讲,用户可以删除一个项目,然后在删除回调和原因和错误之前打开该项目.处理这个问题的最佳方法是什么?以下是我看到的选项.
AsyncTask总是会很快发生,以避免出现问题ListView之前无效AsyncTask(但这会导致UI中的闪存)AsyncTask编辑:我最终使用RecyclerView但adapter.notifyItemRemoved(itemPos)直到我从数据库中删除项目后才能调用.
我刚学会了Log.wtf("多么可怕的失败"大声笑),我想知道什么时候应该使用它.
Log.wtf异常和让异常无法处理(崩溃)之间有什么区别?IllegalStateException意想不到的条件.我应该考虑打电话Log.wtf吗?编辑:
当我在 git 中进行交互式 rebase时,我如何squash提交并停止edit相同的提交?
必须有一种方法来创建一个JavaTypefrom String.class?
注意:该方法的输入必须 JavaType适用于我的用例,因为该值是使用TypeFactory.
/** Returns a JavaType for Map<String, valueType> **/
private static JavaType stringToJavaType(JavaType valueType) {
TypeFactory typeFactory = objectMapper.getTypeFactory();
// this does not compile, can't mix Class and JavaType
return typeFactory.constructMapType(Map.class, String.class, valueType);
}
Run Code Online (Sandbox Code Playgroud)
如果我可以回答一个相关的问题,constructMapTypeover 有constructParametricType什么好处?
我有一个结构体,它可以通过一系列包含大量write!调用的复杂方法调用转换为文本。此文本可以写入文件或调试日志。我正在尝试决定是否使用fmt::Write或io::Write。我不能真正使用两者,因为那样所有的写作方法都需要复制。
简化示例:
impl MyType {
fn write_it(&self, writer: &mut impl ???) {
// ^ fmt::Write or io::Write?
self.write_header(writer);
self.write_contents(writer);
self.write_footer(writer);
}
fn write_header(&self, writer: &mut impl ???) {
write!(writer, "...")
}
// and more...
}
Run Code Online (Sandbox Code Playgroud)
文档fmt::Write说,
...这类似于标准库的 io::Write 特性,但它仅用于 libcore。
所以这让我相信我应该使用io::Write. 这(显然)对于 I/O 类型(如BufWriter. 似乎值得注意的是serde_json 是这样做的。
// if I use io::Write, I can do this
my_type.write_it(&mut BufWriter::new(File::create("my-file.txt")?)?;
Run Code Online (Sandbox Code Playgroud)
我还想将我的类型与format!类似的宏一起使用。所以我需要实施Display. 事实上,不是Display可以表示为 a …
我们做得到
if(condition)
doThis();
Run Code Online (Sandbox Code Playgroud)
还有这个
while(condition)
doThat();
Run Code Online (Sandbox Code Playgroud)
但不是这个
int giveMeFive()
return 5; // Error: expected a '{'
Run Code Online (Sandbox Code Playgroud)
为什么不?
我知道语言语法需要{和}函数定义.我问的是条件语句(不需要大括号)和函数定义(它们之间)之间差异的基本原理.
有什么方法可以显示带有 reflog 引用的 git log 图mybranch@{N}吗?在执行 rebase 以在图表中查看分支的先前和当前版本后,这将很有用。基本上我想要的(我认为)是git log --graph --walk-reflogs mybranch但是这给了我一个错误fatal: cannot combine --walk-reflogs with history-limiting options。
我可以非常接近,git log --graph --reflog mybranch但不会显示像mybranch@{1}.
也许这是一个限制,因为您不能在同一个命令中遍历祖先和引用日志?尽管如此,似乎应该有一种方法可以遍历 reflog 5 个左右的条目并将这些带有标签的引用提供给git log --graph.
git diff有这个功能--color-moved=dimmed-zebra,听起来很漂亮,但我就是不明白。如果发现zebra它非常有用,因为它显示移动的块。但dimmed_zebra对我来说似乎完全武断。为什么“两个相邻块的边界线......被认为很有趣”?此功能如何帮助我更有效地分析差异?如果我了解它的预期目的,我觉得这个功能会很有用。一个具体的例子可能会有所帮助。
这是联机帮助页中的片段。
斑马
贪婪地检测至少 20 个字母数字字符的移动文本块。使用 color.diff.{old,new}Moved 颜色或 color.diff.{old,new}MovedAlternative 绘制检测到的块。两种颜色之间的变化表明检测到新块。
暗斑马
与 zebra 类似,但对移动代码的无趣部分进行了额外调光。两个相邻块的边界线被认为是有趣的,其余的则无趣。