OkHttp中读写超时的行为是什么?
是整个请求超过超时持续时间时触发的超时异常,还是套接字在此期间未接收(读取)或发送(写入)任何数据包的情况.
我认为这是第二种行为,但有人可以澄清这一点吗?
提前致谢.
我有个问题.当我开始了第一次我的Android应用程序,在主要活动均onCreate与onResume被调用.但我想只被称为onCreate.
我能做什么?
我正在开发一个启动器应用程序,当用户验证自身时会显示对话框碎片.大部分时间这都运行良好,但有时我有这个错误日志:
02-07 18:55:56.619: E/AndroidRuntime(1300): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1280)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1291)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.BackStackRecord.commit(BackStackRecord.java:532)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.DialogFragment.dismissInternal(DialogFragment.java:292)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.DialogFragment.dismiss(DialogFragment.java:258)
02-07 18:55:56.619: E/AndroidRuntime(1300): at com.blablabla.android.app.fragments.login.LoginResultFragment$CloseDialogRunnable.run(LoginResultFragment.java:59)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.os.Handler.handleCallback(Handler.java:615)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.os.Handler.dispatchMessage(Handler.java:92)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.os.Looper.loop(Looper.java:137)
02-07 18:55:56.619: E/AndroidRuntime(1300): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-07 18:55:56.619: E/AndroidRuntime(1300): at java.lang.reflect.Method.invokeNative(Native Method)
02-07 18:55:56.619: E/AndroidRuntime(1300): at java.lang.reflect.Method.invoke(Method.java:511)
02-07 18:55:56.619: …Run Code Online (Sandbox Code Playgroud) 解决了.见底部.
刚刚升级到OSX Lion并试图让我的Perl安装再次运行:
sudo /usr/bin/perl -MCPAN -e 'install "MODULENAME"'
MODULENAME我试过的任何价值(例如JSON)产生:
...
Checking if your kit is complete...
Looks good
Writing Makefile for JSON
make: *** No rule to make target `/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.h', needed by `Makefile'. Stop.
MAKAMAKA/JSON-2.53.tar.gz
/Developer/usr/bin/make -- NOT OK
Run Code Online (Sandbox Code Playgroud)
我找不到任何类似的东西config.h,目录虽然存在...
甚至没有这个工作:
/usr/bin/cpan CPAN
Run Code Online (Sandbox Code Playgroud)
已解决:从AppStore下载并安装最新版本的XCode.请注意,只是从AppStore下载XCode不会安装它(为什么,Apple,为什么?)但是只将安装程序转储到/ Applications中.运行安装程序,这将解决此问题.
我正在处理Android L颜色定义以定义ListView的行.我有一个主题:
<item name="colorAccent">@color/color_blue_dark</item>
Run Code Online (Sandbox Code Playgroud)
在我的行中我定义了另一个:
<style name="DefaultRow">
<item name="colorAccent">@color/color_sand</item>
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
Run Code Online (Sandbox Code Playgroud)
假设colorAccent值将被覆盖.但如果我在我的行中,那就不行了:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
style="@style/DefaultRow"/>
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,它会起作用:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/DefaultRow"/>
Run Code Online (Sandbox Code Playgroud)
有什么不同?是colorAccent在应用主题时定义的,而不是在以后重写?如何解决这个问题具有逆向兼容性?
我正在编写一个小框架,需要instanceof用来知道传递哪种类型的回调.我已经知道了instanceof它的缺点,但它在第三方库中使用,我不能改变那部分.
在编写lambdas并进行转换时,IntelliJ警告我,转换是多余的,但实际上它是需要的(它会影响结果),并且如果我明确声明lambda它就可以工作.你知道这是不是一个bug,也许我错过了什么或有更好的方法来做到这一点?
例:
public class Main {
public interface Iface {
String run();
}
public interface IfaceA extends Iface {
}
public interface IfaceB extends Iface {
}
public static void lambdaTest(Iface iface) {
System.out.print(iface.run()+": ");
if (iface instanceof IfaceA) {
System.out.println("IfaceA");
} else if (iface instanceof IfaceB) {
System.out.println("IfaceB");
} else {
System.out.println("Iface");
}
}
public static void main(String[] args) {
lambdaTest((IfaceA)() -> "Casted to A");
lambdaTest((IfaceB)() -> "Casted to B");
lambdaTest(() -> "Not Casted"); …Run Code Online (Sandbox Code Playgroud) 我正在开发一些应用程序,其中一个是作为"服务器"(让我们称之为Core),其余的作为客户端.Core应用程序是在后台运行的服务,客户端应用程序使用Core的提供程序来获取数据.
为此,我已将权限添加到我的服务应用中:
<permission android:name="com.mycompany.android.core.DATA_READ" />
<permission android:name="com.mycompany.android.core.DATA_WRITE" />
Run Code Online (Sandbox Code Playgroud)
我的应用程序请求权限:
<!-- Permission to use Core's ContentProvider -->
<uses-permission android:name="com.mycompany.android.core.DATA_READ"/>
<uses-permission android:name="com.mycompany.android.core.DATA_WRITE"/>
Run Code Online (Sandbox Code Playgroud)
如果我在设备中安装Core,然后安装任何应用程序,它运行良好,识别权限然后正常执行.
但是应用程序还可以检查设备中是否安装了此Core应用程序,然后从Google Play下载,问题是,当我在应用程序之后安装Core时,我的权限无法识别:
W/ActivityManager( 751): Permission Denial: opening provider com.mycompany.android.core.db.DataProvider from ProcessRecord{23ee9d17 19907:com.mycompany.android.vanilla.ta/u0a120} (pid=19907, uid=10120) requires com.mycompany.android.core.DATA_READ or com.mycompany.android.core.DATA_WRITE
E/AndroidRuntime(19907): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(19907): Process: com.mycompany.android.vanilla.ta, PID: 19907
E/AndroidRuntime(19907): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(19907): at android.os.AsyncTask$3.done(AsyncTask.java:300)
E/AndroidRuntime(19907): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(19907): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(19907): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(19907): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(19907): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(19907): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Gradle中为PMD任务创建一些排除模式.
我的任务是以下一个方式生成的:
/* Allows generation of pmd config */
allprojects {
apply plugin: 'pmd'
}
gradle.projectsEvaluated {
subprojects.each() { project ->
if (project.hasProperty('android')) {
project.task("runPmd", type: Pmd) {
description "Run pmd"
group 'verification'
source = fileTree("${project.projectDir}/src/main/java")
ruleSetFiles = files("${project.rootDir}/build-tools/pmd.xml")
ignoreFailures = true
reports {
xml.enabled = true
html.enabled = true
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
而ruleSet是:
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="MyCompany ruleset"
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
MyCompany ruleset for Android PMD
</description>
<exclude-pattern>.*/org/jivesoftware/.*</exclude-pattern>
<exclude-pattern>.*/net/java/.*</exclude-pattern>
...rules...
</ruleset>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?检查这个 …