小编Ale*_*oss的帖子

Android TextureView与VideoView性能

我需要能够在屏幕上旋转视频,因此我创建了一个自定义TextureView,它在MediaPlayer上提供了一个便利层,类似于VideoView当前实现的方式.这个Android博客文章说下面关于TextureView:

由于SurfaceView的内容不在应用程序窗口中,因此无法有效地转换(移动,缩放,旋转).这使得在ListView或ScrollView中使用SurfaceView变得很困难.SurfaceView也无法与UI工具包的某些功能正确交互,例如淡化边缘或View.setAlpha().

为了解决这些问题,Android 4.0引入了一个名为TextureView的新小部件,它依赖于硬件加速的2D渲染管道和SurfaceTexture.TextureView提供与SurfaceView相同的功能,但与SurfaceView不同,它表现为常规视图.例如,您可以使用TextureView来显示OpenGL场景或视频流.TextureView本身可以是动画,滚动等.

然而,看起来TextureView正在努力播放视频.我正在测试的目标设备有一个1.2Ghz Rockchip RK3066双核CPU,四核Mali-400 GPU(ARM)和1GB RAM.在此设备上使用VideoViews的相同代码表现不错,但TextureViews在播放时"口吃"或根本不显示(左上角带有白色方框的黑框),具体取决于具体设备.TextureViews使用英特尔提供的x86"设备"在仿真器上运行良好.

这种性能是否会受到影响,或者我应该在其他地方寻找问题?谢谢

performance android android-widget android-videoview

28
推荐指数
1
解决办法
1万
查看次数

ZF2 Zend\Db使用Mysql表达式插入/更新(Zend\Db\Sql\Expression?)

有没有办法通过Zend\Db和/或TableGateway insert()/ update()语句在ZF2(2.0.0beta4)的当前版本中包含NOW()等MySQL表达式?

以下是邮件列表中的相关帖子,但尚未得到解答:http://zend-framework-community.634137.n4.nabble.com/Zend-Db-Expr-and-Transactions-in-ZF2- DB-td4472944.html

似乎ZF1使用了类似的东西:

    $data = array( 
        'update_time'   => new \Zend\Db\Expr("NOW()") 
    ); 
Run Code Online (Sandbox Code Playgroud)

通过Zend\Db\Sql\Expression查看后我尝试了:

    $data = array(
        'update_time' => new \Zend\Db\Sql\Expression("NOW()"),
    );
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

Catchable fatal error: Object of class Zend\Db\Sql\Expression could not be converted to string in /var/www/vendor/ZF2/library/Zend/Db/Adapter/Driver/Pdo/Statement.php on line 256
Run Code Online (Sandbox Code Playgroud)

按照这里的建议:http://zend-framework-community.634137.n4.nabble.com/ZF2-beta3-Zend-Db-Sql-Insert-new-Expression-now-td4536197.html我目前正在设置使用PHP代码约会,但我宁愿使用MySQL服务器作为日期/时间的单一事实来源.

    $data = array(
        'update_time' => date('Y-m-d H:i:s'),
    );
Run Code Online (Sandbox Code Playgroud)

谢谢,我感谢任何输入!

php zend-db zend-framework2

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

Javascript(ES6)Array.of()的用例是什么?

我遇到了在ES6中最终确定的新Array.of()方法,我想知道何时可以使用:

var a = Array.of('foo', 'bar');
Run Code Online (Sandbox Code Playgroud)

过度:

var b = ['foo', 'bar'],
    c = new Array('foo', 'bar');
Run Code Online (Sandbox Code Playgroud)

javascript arrays ecmascript-6

3
推荐指数
1
解决办法
218
查看次数

Java/Android绝对最快的方式来定期获取当前秒数(0-59)和/或毫秒数(0-999)

Runnable每隔100毫秒在Java中执行一个Android应用程序ScheduledExecutorService.作为run()块的一部分,我需要将当前秒数设置为0-59,将毫秒数量设置为0-999.两者都应该在当地时间,尽管UTC也是可行的.

什么是绝对最快的方法呢?不需要国际化/独特的日历.

目前我正在使用Calendar以下方式,但我认为它可以更快地使用System.currentTimeMillis()和做一些数学,我很感激任何输入.

Calendar calendar = Calendar.getInstance();
int seconds = calendar.get(Calendar.SECOND);
Run Code Online (Sandbox Code Playgroud)

如果它是相关的,这实际上是在Android应用程序中.

编辑以澄清

获得当前秒数为0-59(即相对于当前分钟)是至关重要的,因此System.currentTimeMillis()如上所述,数学成本也是如此.我不确定的是,进行此数学+系统调用是否会比调用更快Calendar,或者是否有任何其他选项(如Joda Time)可能具有更少的占用空间.

作为参考,下面是我最直接的方法,从Unix时间戳得到秒(0-59).

double seconds = Math.floor(((Math.floor(System.currentTimeMillis() / 1000) % 86400) % 3600) % 60);
Run Code Online (Sandbox Code Playgroud)

java android

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