我正在使用FileProvider将我的内部文件暴露给Gallery.为了使它更加统一,我还将我的外部文件放入提供程序(通过外部路径),但对于可移动SD卡中的文件,它不起作用.说这个文件夹之类的东西没有被授权.
任何帮助将不胜感激.
谢谢
我正在通过以下方式将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) 我需要在代码中实现一些异常处理,因此我有以下从片段启动的协程测试代码;
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) 我有类似下面的内容,我想将它们作为意图参数传递;
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)预料之中。
我四处寻找解决方法,但找不到。有任何想法吗?
正如标题所暗示的那样,我很好奇这样做之间是否有任何区别;
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:上面的示例代码灵感来自这里。
我有一个简单的问题,但无法找到正确的答案。想象一下我们有;
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) 不在同步块中。
我想知道当设备的 DMA 控制器正在进行内存操作时,CPU 可以处理/执行什么类型的操作,以提高并发级别?如果 CPU 缓存/寄存器为空,如何在不交错 DMA 的情况下获取另一条指令
谢谢
我想知道如果 2 个 CPU 内核同时尝试访问内存(通过内存控制器),“一般情况下”如何处理内存访问?实际上,当内核和支持 DMA 的 IO 设备尝试以相同的方式访问时,这同样适用。
我认为,内存控制器足够智能,可以利用地址总线并同时处理这些请求,但是我不确定当它们尝试访问同一位置或 IO 操作垄断地址总线并且没有 CPU 空间时会发生什么继续前进。
谢谢
我不是专业的网络工程师,所以我希望我的问题不会显得含糊或na\xc3\xafve。
\n\nHTTP/2.0 中的多路复用似乎利用单个 TCP 连接来同时处理多个/不同的请求,这样我们就可以避免队头阻塞问题。我想知道在数据重组的意义上它是如何与底层 TCP 连接一起工作/重叠的意义上它是如何与底层 TCP 连接一起工作/重叠的。
\n\nTCP 还确保接收方接收到的数据 (D) 被重建,即使构成 D 的数据包乱序(或丢失)接收,以便在接收方重新构建 D,然后将其交给应用程序。
\n\n我的问题是:HTTP/2.0 中的帧概念如何适应 TCP 数据包重组以在接收端组成完整的消息?哪一个先发生?或者,帧和数据包之间存在什么样的映射(一对一、一对多等)?简而言之,他们如何协同工作?
\n我试图理解 Kotlin 对泛型的理解,尤其是使用inandout关键字。我写了这篇简单的文章,希望能说明我的困惑点。
这是看起来和工作正常的方法;
在这里,IDE 给出了一个提示,说 for 循环迭代的项目的类型是 a Shape。这很好。
上述方法的另一个版本乍一看似乎不太正确(因为它是“消费者”)。但我想要做的就是阅读一个形状列表,这就是这个from.
这不起作用,根据规则可能是正确的,但我无法在这里连接点。这似乎是一个安全的操作。我还可以看到 Kotlin 将类型简化为“Any?” 这解释了为什么这已经给出了编译器错误。有人可以在这里解释一下潜在的类型不安全吗?
我已经使用 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)
此调用返回一个空列表。我知道我检索值的方式有问题,但看不到那到底是什么。
kotlin ×4
android ×3
concurrency ×2
cpu ×2
dma ×2
exception ×2
clojure ×1
covariance ×1
dictionary ×1
frames ×1
generics ×1
hardware ×1
http2 ×1
io ×1
java ×1
memory ×1
multiplexing ×1
packet ×1
parcelable ×1
sd-card ×1
sealed ×1
synchronized ×1
tcp ×1