小编cam*_*ous的帖子

ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT之间的真正区别是什么?

我有一个很难理解的区别ACTION_OPEN_DOCUMENTACTION_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)

android

32
推荐指数
1
解决办法
7211
查看次数

“访问控制允许来源:*”的缺点?

我有一个网站,有一个单独的静态文件子域。我发现我需要设置Access-Control-Allow-Origin标题才能使某些 AJAX 功能正常工作,特别是字体。我希望能够访问静态子域以localhost进行测试以及www子域。简单的解决方案似乎是Access-Control-Allow-Origin: *。我的服务器使用 nginx。

什么是主要的原因,你可能希望使用通配符为Access-Control-Allow-Origin您的响应头?

http nginx http-headers cors

13
推荐指数
1
解决办法
967
查看次数

异步删除ListView/RecyclerView项的最佳做法

我有ListView一个CursorLoader.用户可以打开ListView项目(打开另一个Fragment项目)或删除项目.所有数据库操作都是异步发生的,通常只需要几分之一秒.但从技术上讲,用户可以删除一个项目,然后在删除回调和原因和错误之前打开该项目.处理这个问题的最佳方法是什么?以下是我看到的选项.

  1. 假设AsyncTask总是会很快发生,以避免出现问题
  2. 在UI线程上执行数据库操作
  3. 使ListView之前无效AsyncTask(但这会导致UI中的闪存)
  4. 在此期间以某种方式阻止用户输入 AsyncTask

编辑:我最终使用RecyclerViewadapter.notifyItemRemoved(itemPos)直到我从数据库中删除项目后才能调用.

database android listview asynchronous android-recyclerview

8
推荐指数
2
解决办法
1003
查看次数

Log.wtf与未处理的异常

我刚学会了Log.wtf("多么可怕的失败"大声笑),我想知道什么时候应该使用它.

  1. 调用Log.wtf异常和让异常无法处理(崩溃)之间有什么区别?
  2. 它如何影响Google Play开发者控制台中的崩溃报告?
  3. 我经常抛出IllegalStateException意想不到的条件.我应该考虑打电话Log.wtf吗?

编辑:

另请参阅:在什么情况下Android的Log.wtf会终止我的应用程序?

android

8
推荐指数
1
解决办法
284
查看次数

如何压缩和编辑相同的提交?

当我在 git 中进行交互式 rebase时,我如何squash提交并停止edit相同的提交?

git git-rebase git-interactive-rebase

6
推荐指数
2
解决办法
919
查看次数

Jackson 从 Class 创建 JavaType

必须有一种方法来创建一个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什么好处?

java class jackson jackson2

6
推荐指数
2
解决办法
3067
查看次数

对我的可写类型使用 fmt::Write 或 io::Write trait?

我有一个结构体,它可以通过一系列包含大量write!调用的复杂方法调用转换为文本。此文本可以写入文件或调试日志。我正在尝试决定是否使用fmt::Writeio::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 …

rust

6
推荐指数
1
解决办法
779
查看次数

为什么一个衬垫功能需要支架?

我们做得到

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)

为什么不?

我知道语言语法需要{}函数定义.我问的是条件语句(不需要大括号)和函数定义(它们之间)之间差异的基本原理.

c language-design

5
推荐指数
2
解决办法
310
查看次数

Git reflog图?

有什么方法可以显示带有 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

3
推荐指数
1
解决办法
648
查看次数

暗斑马的目的是什么?

git diff有这个功能--color-moved=dimmed-zebra,听起来很漂亮,但我就是不明白。如果发现zebra它非常有用,因为它显示移动的块。但dimmed_zebra对我来说似乎完全武断。为什么“两个相邻块的边界线......被认为很有趣”?此功能如何帮助我更有效地分析差异?如果我了解它的预期目的,我觉得这个功能会很有用。一个具体的例子可能会有所帮助。

这是联机帮助页中的片段。

斑马

贪婪地检测至少 20 个字母数字字符的移动文本块。使用 color.diff.{old,new}Moved 颜色或 color.diff.{old,new}MovedAlternative 绘制检测到的块。两种颜色之间的变化表明检测到新块。

暗斑马

与 zebra 类似,但对移动代码的无趣部分进行了额外调光。两个相邻块的边界线被认为是有趣的,其余的则无趣。

git

3
推荐指数
1
解决办法
177
查看次数