小编Jon*_*itz的帖子

从onSizeChanged()调用时,requestLayout()无效?

我有一个视图,在水平滚动窗口中以列的形式显示文本和图像.随着内容的变化,它会重新流动并因此(至少可能)自我调整大小; 当软键盘进出并且视图高度发生变化时,它还会回流并调整大小(保持大致恒定的区域).

我发现调用requestLayout()是有效的(在某种意义上它确实触发了对我的onMeasure()重载的调用)大部分时间......但是从我的onSizeChanged()处理程序调用时却没有.

我能够解决此职位()荷兰国际集团一个Runnable的调用requestLayout(),然后post()编另一个Runnable是叫我的代码需要运行后onMeasure()...但是这似乎有点脆弱的(我不希望添加的延迟,但我确实希望确保我的第二个Runnable在异步之后执行,onMeasure()并且可能因为它在事件循环中进行了如此多的传递,屏幕闪烁太多.

在下一个onDraw()之前是否有某种方式 - onSizeChanged()强制一个onMeasure()(可能还有另一个)onSizeChanged()

android android-layout

19
推荐指数
1
解决办法
4317
查看次数

为什么我会收到"不支持的格式"错误,使用Android MediaPlayer读取H.264编码的rtsp流?

我想在Android设备上显示H.264编码的rtsp视频.该流来自Raspberry Pi,使用vlc编码/dev/video1,这是一个"Pi NoIR相机板".

vlc-wrapper -vvv v4l2:///dev/video1 --v4l2-width $WIDTH --v4l2-height $HEIGHT --v4l2-fps ${FPS}.0 --v4l2-chroma h264 --no-audio --no-osd --sout "#rtp{sdp=rtsp://:8000/pi.sdp}" :demux=h264 > /tmp/vlc-wrapper.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我现在正在使用非常少的Android代码:

final MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(holder);
try {
  mediaPlayer.setDataSource(url);
  mediaPlayer.prepare();
Run Code Online (Sandbox Code Playgroud)

并获得"准备失败:状态= 0x1" IOException.当我查看日志时,我会看到类似的行

06-02 16:28:05.566 W/APacketSource(  316): Format:video 0 RTP/AVP 96  / MIME-Type:H264/90000
06-02 16:28:05.566 W/MyHandler(  316): Unsupported format. Ignoring track #1.
06-02 16:28:05.566 I/MyHandler(  316): SETUP(1) completed with result -1010 (Unknown error 1010)
Run Code Online (Sandbox Code Playgroud)

来自系统过程.Grepping这些消息指向 libstagefright/rtsp源,似乎意味着构造函数中的ASessionDescription::getDimensions调用APacketSource::APacketSource失败.这似乎不应该发生,因为VLC肯定知道要输出的维度: …

android h.264 stagefright android-mediaplayer

10
推荐指数
1
解决办法
1887
查看次数

是不是Android永远不会卸载类?

我们有一个大型的应用程序,总是遇到恐惧方法计数限制.我被要求想方设法让它做得更多,包括支持插件.寻找方法来卸载代码,我跑过JNI提示其说

只有在与ClassLoader关联的所有类都可以进行垃圾回收时,才会卸载类,这种情况很少见,但在Android中并非不可能.

这似乎意味着如果你说,你可以卸载一个插件

  1. DexClassLoader为每个.jar文件使用new ,
  2. 只能通过接口引用来引用插件,并且
  3. 完成后,取消该接口引用的任何副本.

所以,我创建了一个测试用例:

  1. 我创建了几个简单的插件,每个插件使用一个独特的加载器.
  2. ReferenceQueue<ClassLoader>使用该队列创建了一个并创建了对我的两个加载器的弱引用; 我创建/启动了一个无限循环,执行队列.remove()和报告的线程.
  3. 我类似地创建了一个ReferenceQueue<Class<?>>getClass()使用队列创建了对每个插件的弱引用; 我创建/启动了另一个监视类引用队列的线程.
  4. 我创建了一千个1000x1000xARGB_8888位图来彻底强制gc.

我的监控线程似乎工作 - loader2当我loader1以前错误地加载两个插件时,我看到得到gc-ed ;-) - 但是否则我的线程保持沉默,即使在4.3.我可能在这个测试用例中遗漏了一些明显的东西,或者仍然是这样的情况

Dalvik VM目前没有卸载类

正如Google员工faddenAndroid中所说的那样:什么时候系统会卸载类?

android dexclassloader

8
推荐指数
1
解决办法
1618
查看次数

声明为Android联系人照片大小的常量?

我的Nexus S上的联系人照片是96x96.我真的不想将这些知识"烘焙"到我的代码中 - 是否有一个声明这个的常量?我看了,但似乎找不到一个.

android photo contact

6
推荐指数
1
解决办法
1961
查看次数