一个简单的问题:是否可以返回值AsyncTask
?
//AsyncTask is a member class
private class MyTask extends AsyncTask<Void, Void, Void>{
protected Void doInBackground(Void... params) {
//do stuff
return null;
}
@Override
protected void onPostExecute(Void result) {
//do stuff
//how to return a value to the calling method?
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的Activity
/ Fragment
:
// The task is started from activity
myTask.execute()
// something like this?
myvalue = myTask.getvalue()
Run Code Online (Sandbox Code Playgroud)
编辑:这是很久以前我不熟悉Java的问题,现在我对它更好了,我会做一个简短的总结:
异步任务的重点是任务是asynchronous
,这意味着在您调用execute()
任务之后,任务开始在自己的线程上运行.从asynctask返回一个值是没有意义的,因为原始调用线程已经继续做其他事情(因此任务是异步的).
想想时间:在某个时间点,您启动了一个与主线程并行运行的任务.当并行运行任务完成时,主线程上也经过了时间.并行任务无法及时返回以将值返回给主线程.
我是从C来的,所以我对此并不了解.但似乎很多人都有同样的问题,所以我想我会稍微澄清一下.
没有foreach,我怎么能像这样转动一个数组
array("item1"=>"object1", "item2"=>"object2",......."item-n"=>"object-n");
Run Code Online (Sandbox Code Playgroud)
到这样的字符串
item1='object1', item2='object2',.... item-n='object-n'
Run Code Online (Sandbox Code Playgroud)
我implode()
已经考虑过了,但它并没有破坏它的关键.
如果预见到必要,是否有可能不嵌套foreach?
编辑:我改变了字符串
EDIT2/UPDATE: 很久以前就提出过这个问题了.那时,我想在一行中编写所有内容,因此我将使用三元运算符并嵌入内置函数调用以支持foreach.那不是一个好习惯!编写可读的代码,无论简洁与否都无关紧要.
在这种情况下:将foreach放在函数中将比编写单行更具可读性和模块性(即使所有答案都很棒!).
如何反序列化包含不区分大小写的枚举值的JSON字符串?(使用Jackson Databind)
JSON字符串:
[{"url": "foo", "type": "json"}]
Run Code Online (Sandbox Code Playgroud)
和我的Java POJO:
public static class Endpoint {
public enum DataType {
JSON, HTML
}
public String url;
public DataType type;
public Endpoint() {
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,反序列化JSON "type":"json"
将失败,因为它"type":"JSON"
可以工作.但我想"json"
以命名惯例为理由.
序列化POJO也会导致大写 "type":"JSON"
我想过使用@JsonCreator
和@JsonGetter:
@JsonCreator
private Endpoint(@JsonProperty("name") String url, @JsonProperty("type") String type) {
this.url = url;
this.type = DataType.valueOf(type.toUpperCase());
}
//....
@JsonGetter
private String getType() {
return type.name().toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)
它奏效了.但我想知道是否有更好的解决方案,因为这看起来像是对我的黑客攻击.
我也可以编写一个自定义反序列化器,但是我有很多不同的POJO使用枚举,而且很难维护.
任何人都可以建议一个更好的方法来使用适当的命名约定序列化和反序列化枚举?
我不希望我在java中的枚举是小写的!
这是我使用的一些测试代码:
String data = "[{\"url\":\"foo\", \"type\":\"json\"}]";
Endpoint[] …
Run Code Online (Sandbox Code Playgroud) 在开发相机应用程序时,我遇到了一个异常,只有当我切换到其他应用程序(onPause()
对于我的应用程序)时才会发生.
01-15 17:22:15.017: E/AndroidRuntime(14336): FATAL EXCEPTION: main
01-15 17:22:15.017: E/AndroidRuntime(14336): java.lang.RuntimeException: Method called after release()
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Native Method)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Camera.java:357)
01-15 17:22:15.017: E/AndroidRuntime(14336): at com.sora.cbir.yuki.image.leaf.CameraPreview.surfaceCreated(CameraPreview.java:32)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.updateWindow(SurfaceView.java:551)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:213)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.View.dispatchWindowVisibilityChanged(View.java:4075)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.performTraversals(ViewRoot.java:858)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.handleMessage(ViewRoot.java:1995)
01-15 17:22:15.017: …
Run Code Online (Sandbox Code Playgroud) 在尝试使用我的java应用程序将jar文件中的某些文件复制到临时目录时,会抛出以下异常:
java.nio.file.FileSystemNotFoundException
at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
at java.nio.file.Paths.get(Unknown Source)
at com.sora.util.walltoggle.pro.WebViewPresentation.setupTempFiles(WebViewPresentation.java:83)
....
Run Code Online (Sandbox Code Playgroud)
这是我的一小部分setupTempFiles
(带行号):
81. URI uri = getClass().getResource("/webViewPresentation").toURI();
//prints: URI->jar:file:/C:/Users/Tom/Dropbox/WallTogglePro.jar!/webViewPresentation
82. System.out.println("URI->" + uri );
83. Path source = Paths.get(uri);
Run Code Online (Sandbox Code Playgroud)
该webViewPresentation
目录位于我的jar的根目录中:
当我将我的应用程序打包为jar时,此问题才会退出,在Eclipse中进行调试没有问题.我怀疑这与这个bug有关,但我不确定如何纠正这个问题.
任何帮助赞赏
如果事项:
我在Java 8 build 1.8.0-b132上
Windows 7 Ult.64位
一些第三方图书馆吞下了一个例外:
String getAnswer(){
try{
// do stuff, modify instance state, maybe throw some exceptions
// ...
return computeAnswer();
}catch (SomeException e){
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我想把它改成:
String getAnswer() throws SomeException{
// do stuff, modify instance state, maybe throw some exceptions
// ...
return computeAnswer();
}
Run Code Online (Sandbox Code Playgroud)
我不能,因为库已经打包成一个罐子.那么,有没有办法将异常带回来?
我不需要重新抛出,带有异常的堆栈跟踪和消息也可以工作.
我不认为这里的反思会有所帮助Unsafe
吗?
是的我知道我可以使用调试器来查明发生了什么,但是如果我在运行时需要异常以进行日志记录和那样的事情,这将不会非常有用
由于某些原因,我们的托管公司使用PHP 5.2,甚至没有预先安装mysqli和PDO.
我别无选择,只能重写代码的某些部分,使其兼容5.2.
所以,这是我的问题:
在PHP 5.2中不支持匿名函数,所以我做了以下测试以确保我正确地更改代码:
class foo{
public function toString(){
$arr = array("a", "b");
$arr2 = array("c", "d");
print_r(array_map('mapKeyValue', $arr, $arr2));
}
private function mapKeyValue($v, $k){
return $k."='".$v."'";
}
}
$foo = new foo();
echo $foo->toString();
Run Code Online (Sandbox Code Playgroud)
但上面会给我:
Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....
PHP Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法: …
我正在更新我的应用以带来材料主题支持(我的应用使用Google Play服务)
当我同步我的项目时,这出现了:
...\app\build\intermediates\exploded-aar\com.google.android.gms\play-services\6.1.11\res\values\wallet_colors.xml
Error:Attribute "showText" has already been defined
Run Code Online (Sandbox Code Playgroud)
我的gradle依赖:
compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.google.android.gms:play-services:6.1.11'
// the latest version of play-services is 6.1.11
Run Code Online (Sandbox Code Playgroud)
如果我排除appcompat-v7,那么项目编译时没有错误.
我对棒棒糖感到兴奋,没有正确阅读文档吗?我怎样才能解决这个问题?
部分构建脚本:
compileSdkVersion 21
buildToolsVersion '21.0.1'
dexOptions {
preDexLibraries true
//incremental true
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 11
versionName '1.0'
renderscriptTargetApi 21
renderscriptSupportMode true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
Run Code Online (Sandbox Code Playgroud)
本地Google存储库如下所示:
android android-appcompat google-play-services android-5.0-lollipop
我对CSS很新,所以,这可能看起来很傻:
在CSS中,我使用属性来float:left
将内容定位到相邻元素,现在,我有一个容器用于所有具有float属性的元素.如何让父母元素根据它的内容调整它的高度?
HTML:
<div id="page">
<div id="side">
<p>my sidebar</p>
</div>
<div id="content">
<p>my content</p>
<p>my content1</p>
<p>my content2</p>
<p>my content3</p>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
/* the "border:3px solid #000;" are used to make the div border visble*/
#page{
position:relative;
width:400px;
background-color: #F4F0EC;
border:3px solid #000;
}
#side{
border:3px solid #000;
float:left;
}
#content{
float:left;
border:3px solid #000;
}
Run Code Online (Sandbox Code Playgroud)
与上面,<div id="page">
看起来它的高度为0px ....我怎么让它扭曲内容?
因为我是CSS的新手,请解释我做错了什么,谢谢
在Linux下,如果我想将纯字符串从PHP传递给C,我该怎么做?我尝试过的是:
exec("./myexec.bin -a mystring");
Run Code Online (Sandbox Code Playgroud)
在PHP和
getopt(argc,argv, "a:");
Run Code Online (Sandbox Code Playgroud)
在C.
一切正常,但是当我传递字符串而不是MAX_ARG_STRLEN
(131072)时,它将不再返回0而是返回127,这是命令未找到....
有没有其他方法将字符串数据传递给Linux可执行文件?还是有办法克服这个MAX_ARG_STRLEN
问题?