小编std*_*out的帖子

用于ext sdcard的Android FileProvider

我正在使用FileProvider将我的内部文件暴露给Gallery.为了使它更加统一,我还将我的外部文件放入提供程序(通过外部路径),但对于可移动SD卡中的文件,它不起作用.说这个文件夹之类的东西没有被授权.

任何帮助将不胜感激.

谢谢

android sd-card android-fileprovider

6
推荐指数
3
解决办法
4242
查看次数

ContactResolver.applyBatch(...)有时会返回空结果

我正在通过以下方式将jsonned联系人添加到我的Android设备中(请注意下面的代码是草案 - 它可能包含一些低效的内容);

    ...

    if(!is_duplicated)
    {                   
        String firstName = p_contact.getContactFirstName();
        String middleName = p_contact.getContactMiddleName();
        String lastName = p_contact.getContactLastName();
        String orgName = p_contact.getOrganizationName();           

        boolean isFirstNameNull = (firstName != null && firstName.equalsIgnoreCase("null"));
        boolean isMiddleNameNull = (middleName != null && middleName.equalsIgnoreCase("null"));
        boolean isLastNameNull = (lastName != null && lastName.equalsIgnoreCase("null"));
        boolean isOrgNameNull = (orgName != null && orgName.equalsIgnoreCase("null"));

        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
        ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
               .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
               .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
               .build());

        //----------------- Names 
        if(!isFirstNameNull && !isMiddleNameNull && !isLastNameNull) // 111
        {
           ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                   .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
                   .withValue(ContactsContract.Data.MIMETYPE,
                           ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) …
Run Code Online (Sandbox Code Playgroud)

android android-contentresolver android-contacts

5
推荐指数
0
解决办法
692
查看次数

具有 SupervisorJob 的协程 - 取消行为

我需要在代码中实现一些异常处理,因此我有以下从片段启动的协程测试代码;

private val scoped = CoroutineScope(Dispatchers.Default + SupervisorJob())

...

val handler = CoroutineExceptionHandler { _, exception ->
        println("TAG-Caught $exception")
    }

scoped.launch(handler) {

        val job1 = launch {
            println("TAG-first job is running")
            delay(200)
        }

        testParentChildWithExceptionWithSupervision()

        launch {
            println("TAG-third job is running")
        }
    }
Run Code Online (Sandbox Code Playgroud)

该方法testParentChildWithExceptionWithSupervision看起来像这样;

suspend fun testParentChildWithExceptionWithSupervision() {

    supervisorScope {

        val job1 = launch {
            println("TAG-running first (inner) child")
            delay(200)
            throw ArithmeticException()
        }

        val job2 = launch {
            job1.join()
            println("TAG-First child is cancelled: ${job1.isCancelled}, but second one is still …
Run Code Online (Sandbox Code Playgroud)

android exception kotlin kotlin-coroutines

5
推荐指数
1
解决办法
2194
查看次数

使密封类层次结构 Parcelable

我有类似下面的内容,我想将它们作为意图参数传递;

sealed class BasketType : Parcelable {

    class BasketOne(val basketId: String): BasketType() {

        constructor(parcel: Parcel) : this(parcel.readString()) {
        }

        override fun writeToParcel(parcel: Parcel, flags: Int) {
            super.writeToParcel(parcel, flags)
            parcel.writeString(basketId)
        }

        override fun describeContents(): Int {
            return 0
        }

        ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误;

不能直接访问抽象成员

就在super.writeToParcel(parcel, flags)预料之中。

我四处寻找解决方法,但找不到。有任何想法吗?

sealed parcelable android-intent kotlin

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

使用 `invokeOnCompletion` 和 `try-catch` 的区别

正如标题所暗示的那样,我很好奇这样做之间是否有任何区别;

fun main() {
  val job = GlobalScope.launch(Dispatchers.Main) {
      withTimeout(2000L) {
        delayMe()
      }
  }
  job.invokeOnCompletion { cause -> println("We were canceled due to $cause") }
}

suspend fun delayMe() {
  withContext(Dispatchers.Default) {
    delay(5000L)
  }
}
Run Code Online (Sandbox Code Playgroud)

或这个;

fun main() {
  GlobalScope.launch(Dispatchers.Main) {
    try {
      withTimeout(2000L) {
        delayMe()
      }
    } catch(cause: Exception){
        println("We were canceled due to $cause")
    }
  }
  ...
}

...
Run Code Online (Sandbox Code Playgroud)

在处理协程内的异常方面。

PS:上面的示例代码灵感来自这里

exception kotlin kotlin-coroutines

5
推荐指数
0
解决办法
317
查看次数

java中同步块之后的代码

我有一个简单的问题,但无法找到正确的答案。想象一下我们有;

public void addName(String name) {
    synchronized(this) {
        lastName = name;
        nameCount++;
    }

    nameList.add(name);
} 
Run Code Online (Sandbox Code Playgroud)

同步后的代码怎么样?堵在这里?我的意思是同步。块用于减少锁定范围,但这里后面的代码( namelist.add(name) )将被阻止,对吗?

假设线程 A 调用了上面的这个函数,但它将等待线程 B 释放“这个”锁,而线程 B 之前在其他方法上拥有过该锁。现在,我想知道当线程 A 等待“this”锁对象时,执行是否会从 B 的 nameList.add(name) 方法恢复 - 因为 nameList.add(name) 不在同步块中。

java multithreading synchronization synchronized

4
推荐指数
1
解决办法
1775
查看次数

关于 DMA 和 CPU 并发

我想知道当设备的 DMA 控制器正在进行内存操作时,CPU 可以处理/执行什么类型的操作,以提高并发级别?如果 CPU 缓存/寄存器为空,如何在不交错 DMA 的情况下获取另一条指令

谢谢

hardware cpu concurrency dma

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

多核架构中的 CPU 和内存访问

我想知道如果 2 个 CPU 内核同时尝试访问内存(通过内存控制器),“一般情况下”如何处理内存访问?实际上,当内核和支持 DMA 的 IO 设备尝试以相同的方式访问时,这同样适用。

我认为,内存控制器足够智能,可以利用地址总线并同时处理这些请求,但是我不确定当它们尝试访问同一位置或 IO 操作垄断地址总线并且没有 CPU 空间时会发生什么继续前进。

谢谢

memory io cpu concurrency dma

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

HTTP/2.0 多路复用如何与 TCP 配合使用?

我不是专业的网络工程师,所以我希望我的问题不会显得含糊或na\xc3\xafve。

\n\n

HTTP/2.0 中的多路复用似乎利用单个 TCP 连接来同时处理多个/不同的请求,这样我们就可以避免队头阻塞问题。我想知道在数据重组的意义上它是如何与底层 TCP 连接一起工作/重叠的意义上它是如何与底层 TCP 连接一起工作/重叠的。

\n\n

TCP 还确保接收方接收到的数据 (D) 被重建,即使构成 D 的数据包乱序(或丢失)接收,以便在接收方重新构建 D,然后将其交给应用程序。

\n\n

我的问题是:HTTP/2.0 中的帧概念如何适应 TCP 数据包重组以在接收端组成完整的消息?哪一个先发生?或者,帧和数据包之间存在什么样的映射(一对一、一对多等)?简而言之,他们如何协同工作?

\n

tcp frames packet multiplexing http2

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

了解 Kotlin 中“in”关键字的一种用法

我试图理解 Kotlin 对泛型的理解,尤其是使用inandout关键字。我写了这篇简单的文章,希望能说明我的困惑点。

这是看起来和工作正常的方法;

在此处输入图片说明

在这里,IDE 给出了一个提示,说 for 循环迭代的项目的类型是 a Shape。这很好。

上述方法的另一个版本乍一看似乎不太正确(因为它是“消费者”)。但我想要做的就是阅读一个形状列表,这就是这个from.

在此处输入图片说明

这不起作用,根据规则可能是正确的,但我无法在这里连接点。这似乎是一个安全的操作。我还可以看到 Kotlin 将类型简化为“Any?” 这解释了为什么这已经给出了编译器错误。有人可以在这里解释一下潜在的类型不安全吗?

generics covariance kotlin

0
推荐指数
1
解决办法
226
查看次数

如何在 Clojure 中正确“过滤”地图?

我已经使用 Clojure 玩了一段时间,我陷入了一些我认为对许多人来说非常微不足道的事情......但不是我。我有以下代码;

;; Define a Record structure
(defrecord Person [first-name last-name age occupation])

(def john (->Person "John" "Frusciante" 50 "Guitarist"))

;; People map
(def people {"1" john
             "2" (->Person "Pablo" "Neruda" 90 "Poet")
             "3" (->Person "Stefan" "Zweig" 120 "Author")
             }
) 

(defn get-120-year-old-guy
  [peeps]
  (filter #(= (:age %) 120) peeps)
)

(println "who's 120?: " (get-120-year-old-guy people))
Run Code Online (Sandbox Code Playgroud)

此调用返回一个空列表。我知道我检索值的方式有问题,但看不到那到底是什么。

dictionary clojure

0
推荐指数
1
解决办法
118
查看次数