我需要设置一个简单的事件监听器来ListView
偶尔刷新一次.问题是我不知道如何生成一个事件.
我知道对于像键或按钮按下的事件我只需要实现Handler
.但在这种特定情况下,我实际上需要生成事件,每当我的应用程序的另一个运行线程醒来并刷新其RSS源的新闻列表时,将触发该事件.
我已经做了一切,但被困在这里.我可以获得任何建议或链接有关如何实现这一点的更多信息吗?
好的,文档声明它允许Activity管理游标的生命周期.但是我没有真正看到它的重点,因为当活动被销毁时,对新创建的游标的任何引用也应该被删除,然后光标本身在下一个垃圾收集周期中就会消失.那为什么要这么麻烦?
sqlite android cursor android-loadermanager android-cursorloader
我正在开发流媒体服务器和Flash客户端之间的Java接口.我注意到即使两个进程都在本地运行,UDP数据报也可能无序到达我的接口.
这是正常的吗?我认为,因为没有数据报必须经过任何路由器或任何网络设备,所以不应该发生这种情况.
我不太了解h.264,但问题是我在h.264中有一个mp4容器中的这个视频,我想通过UDP流.
我的问题很简单,在对视频进行编码时是否可以进行任何调整,以便它能够相当容忍某些"轻"数据包丢失?
我知道压缩视频通常每N帧有一个关键帧,然后在它们之间只发送增量.我可以想象h.264应该比那复杂得多,所以它可能不是那么简单.
更确切地说,我一直在进行一些实验,并意识到只需从视频流中删除1024个字节,我就会从丢失和开启的角度将其完全"无法播放".
我想要的是它能够容忍这样的光损失,这可能吗?
谢谢
纳尔逊
在尝试修复简单的视频录制应用程序*时,我遇到了一些问题.我想我正确地遵循了一系列步骤.以下是对我提出问题的代码部分的简化.按下按钮后,此代码仅作为回调执行:
if ( mRecorder != null){
mRecorder.reset();
mRecorder.release();
}
mRecorder = new MediaRecorder();
if(mViewer.hasSurface){
mRecorder.setPreviewDisplay(mViewer.holder.getSurface());
Log.d(TAG,"Surface has been set");
}
try {
Log.d(TAG,"Sleeping for 4000 mili");
Thread.sleep(4000);
Log.d(TAG,"Waking up");
} catch (InterruptedException e) {
Log.e(TAG,"InterruptedException");
e.printStackTrace();
}
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setVideoFrameRate(12);
mRecorder.setVideoSize(176, 144);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setMaxDuration(MAX_DURATION_TEST);
String targetFile = "/sdcard/webcamera/temp.mp4";
File localFile = new File(targetFile);
if(localFile.exists()){
Log.d(TAG,"Local file exists");
}else{
Log.d(TAG,"Local file does not exist");
}
mRecorder.setOutputFile(targetFile);
try {
mRecorder.prepare();
bPrepared = true;
Log.i(TAG,"prepared");
return;
} catch (IllegalStateException e) { …
Run Code Online (Sandbox Code Playgroud) 我一直在使用openmp框架进行一些实验,发现了一些奇怪的结果,我不知道我知道如何解释.
我的目标是创建这个巨大的矩阵,然后用值填充它.为了从多线程环境中获得性能,我将代码的某些部分作为并行循环.我在一台配有2个四核xeon处理器的机器上运行它,所以我可以安全地在那里放置8个并发线程.
一切都按预期工作,但由于某种原因,实际分配矩阵行的for循环在仅运行3个线程时具有奇怪的峰值性能.从那以后,添加更多线程只会让我的循环花费更长时间.8个线程实际上只需要一个线程就可以获得更多时间.
这是我的并行循环:
int width = 11;
int height = 39916800;
vector<vector<int> > matrix;
matrix.resize(height);
#pragma omp parallel shared(matrix,width,height) private(i) num_threads(3)
{
#pragma omp for schedule(dynamic,chunk)
for(i = 0; i < height; i++){
matrix[i].resize(width);
}
} /* End of parallel block */
Run Code Online (Sandbox Code Playgroud)
这让我想知道:在多线程环境中调用malloc(我想是矢量模板类的resize方法实际调用的)时是否存在已知的性能问题?我在一个多线程环境中发现了一些关于释放堆空间性能损失的文章,但没有具体说明在这种情况下分配新空间.
举一个例子,我将下面的图表显示循环完成所需的时间作为分配循环的线程数的函数,以及一个只读取来自这个巨大矩阵的数据的正常循环稍后的.
两次使用gettimeofday函数测量并且似乎在不同的执行实例中返回非常相似和准确的结果.那么,任何人都有一个很好的解释?
这里说它SimpleCursorAdapter
的API级别1构造函数已被弃用,建议使用LoaderManager
和CursorLoader
.
但是深入研究LoaderManager
和CursorLoader
使用我发现这个例子里面的内部类扩展了一个ListFragment
(我认为是Fragment本身的扩展),我们创建了一个CursorLoader
.一切似乎确定,不同的是,其实CursorLoader
需要一个Uri
作为参数.所以这意味着我需要创建一个ContentProvider
访问我的数据库的权限.
我必须承认,为了创建一个简单的ListView
来自数据库的项目,我们必须完成所有这些操作才能看起来有点过分.特别是如果我不打算将我的数据库数据提供给其他应用程序,并且内容提供商的主要目的是这样做.
那真的值得吗?
特别是在像我这样的情况下,要获取的内容可能会很小.我认真考虑用旧方式做,你怎么说?
sqlite android uri android-contentprovider android-loadermanager
我一直在尝试实现本教程中描述的选项卡UI:https://developer.android.com/resources/tutorials/views/hello-tabwidget.html
我按照说明的过程中的所有步骤,但我不断收到有关每个选项卡的内容运行时异常我相信这事做,没有一个地方在教程中,我添加了额外的活动(歌曲,艺术家和专辑)的事实进入android清单文件.
我对么?本教程(像许多其他人一样)是错误还是不完整?
我有一些像我的客户端和实际视频服务器(用c ++制作)之间运行的代理服务器(用java编写).客户端发送的所有内容都通过此代理进行,然后重定向到服务器.
它工作正常,但我有一些问题,并认为如果我可以使这个代理服务器只听取客户端请求,然后以某种方式告诉服务器已从客户端发出请求,它会更好应该直接与客户端建立连接.
基本上在TCP级别我想要发生的事情是这样的:
1-只要客户端向我的代理发送SYN,代理就会向真实服务器发送一条消息,告诉客户端的IP和端口.
2-然后,服务器将相应的SYN-ACK发送到指定的客户端,在客户端和服务器之间创建直接连接.
然后,代理只是将初始请求(但不是后来的数据传输)中继到实际服务器.我只是不知道这是否可能.
非常感谢你
尼尔森R.佩雷斯
这是一个ffmpeg问题.我有这个错误,说它无法找到hq预设文件,然后我在文档中读到它在'PREFIX/share/ffmpeg'以及'$ HOME/.ffmpeg'中查找预设文件.问题是我从一个调用python脚本的php文件中调用ffmpeg,该文件最终执行类似'commands.getstatusoutput(command)'的命令,所以我不确定用户是谁.
解决方案?我刚刚使用了-fpre,我的调用现在看起来像这样:
/ usr/local/bin/ffmpeg -i ../files/tmpvideos/myStream.flv -y -acodec libfaac -ab 96k -b 800k -maxrate 800k -minrate 600k -bufsize 800k -s 720x640 -vcodec libx264 -g 300 - r 20 -fpre /home/admin/.ffmpeg/libx264-hq.ffpreset -threads 0 ../files/tmpvideos/4647-60.mp4
我在/ home/admin下创建了该目录,并且100%确定文件现在存在,但仍然ffmpeg说:
File for preset '/home/admin/.ffmpeg/libx264-hq.ffpreset' not found
Run Code Online (Sandbox Code Playgroud)
所以我不确定为什么它不起作用,因为我现在指定了完整的路径.有任何想法吗?
我想到的一个原因是它可能没有正确编译,就像所有的标志和东西一样.我的意思是,虽然有些输出看起来像这样:
FFmpeg version SVN-r22976, Copyright (c) 2000-2010 the FFmpeg developers
built on Apr 30 2010 12:03:12 with gcc 4.2.1-sjlj (mingw32-2)
configuration: --enable-shared --enable-static --enable-memalign-hack
--enable
-libmp3lame --enable-libx264 --enable-gpl
libavutil 50.14. 0 / 50.14. 0
libavcodec 52.66. 0 …
Run Code Online (Sandbox Code Playgroud)