小编oli*_*erg的帖子

从通知中恢复应用程序和堆栈

我希望以与用户在启动器中点按其图标时完全相同的方式从状态栏通知中恢复我的应用.

那就是:我希望堆栈处于与用户离开之前相同的状态.

在通知上设置待处理意图时的问题是它始终以特定活动为目标.我不想要这个.我需要像启动器那样恢复应用程序.

因此,如果用户处于活动A中,我想恢复活动A.如果他已从活动A启动活动B,那么我希望在用户点击通知时显示B,并且要恢复堆栈以便A获得用户点击B中的后退按钮时恢复

还有其他几个问题与类似的标题,但没有一个解决我的问题.

android

58
推荐指数
2
解决办法
3万
查看次数

渲染视频帧的最佳方法是什么?

从捆绑到我的应用程序(FFmpeg等)的解码器中获取视频帧的最佳选择是什么?

我自然倾向于选择使用NDK,OpenGL ES和FFmpeg的Android视频播放器中提到的OpenGL.

但在用于视频显示的Android中的OpenGL中,评论指出OpenGL不是渲染视频的最佳方法.

然后怎样呢?jnigraphics本地图书馆?还有非GL SurfaceView?

请注意,我想使用本机API来渲染帧,例如OpenGL或jnigraphics.但是用于设置SurfaceView等的Java代码是可以的.

PS:MediaPlayer在这里无关紧要,我正在谈论自己解码和显示帧.我不能依赖默认的Android编解码器.

video android android-ndk

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

增加minSdkVersion时可能出现的市场问题

我的应用程序目前与Cupcake兼容.即:清单中的minSdkVersion设置为3.

由于某些技术原因,我正在考虑通过将minSdkVersion设置为4来破坏与Cupcake的兼容性.

但我有很多现有用户下载了Lite版本或购买了我的应用程序,以及谁正在运行Cupcake.

他们在Android Market上会发生什么?他们仍然可以卸载并重新安装与Cupcake兼容的版本吗?或者市场是否擦除旧版本,以便他们无法在需要时重新安装?

还有其他可能的问题吗

我对已经完成这项工作的开发人员的反馈特别感兴趣.根据我的经验,你无法真正对市场做出理论假设.

android

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

为什么我的服务多次实例化?

IIUC,应该只有一个给定Android服务的实例,它是一个单例.

但是,我的服务多次实例化,尽管我没有做任何事情.

当服务崩溃时(例如,当我通过adb卸载应用程序时),它会被安排重新启动("计划重新启动崩溃的服务..").我知道这是服务粘性的影响.

之后,当我的应用程序启动时,它调用startService()和bindService(),服务得到适当的启动和绑定.但是该服务然后被重新实例化并且重复调用onCreate(),因为它被安排多次重启.

然后每个实例等待客户端绑定和注册,但onBind()仅在"main"服务实例中调用.其他实例等待客户端绑定,因为没有发生,所以它们调用stopSelf().

但是stopSelf()在这些"死"实例中绝对没有效果,从不调用onDestroy().

"main"服务实例按预期工作,当它决定调用stopSelf()时,确实调用了onDestroy().

更糟糕的是,所有这些死亡事件都在积累,它们永远不会被摧毁.因此,他们唯一可能的结果是崩溃(每次我通过adb启动/安装时都会发生),从而计划重启.

所以最终我得到了许多这些死的实例,它们大约每分钟一次又一次地重新启动.

有谁知道发生了什么?

android

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

哪个线程用于音频解码?

使用音频播放时,我习惯了以下模式:

  • 一个磁盘(或网络)线程,从磁盘(或网络)读取数据并填充一个环形缓冲区
  • 一个音频线程,从ringbuffer读取数据,可能执行DSP,并写入音频硬件(pull或push API)

这很好用,在使用WAV文件时没有问题.

现在,如果源数据以压缩格式编码,如Vorbis或MP3,则解码需要一些时间.

看起来在磁盘/网络线程中执行解码似乎很常见.

但这不是错误的设计吗?在磁盘或网络访问块时,某些CPU时间可用于解码,但如果在同一线程中发生解码则会浪费.

在我看来,如果网络变慢,那么如果按顺序进行解码,则缓冲区欠载的风险会更高.

那么,不应该在音频线程中执行解码吗?

在我的上下文中,我宁愿避免添加专用的解码线程.它适用于移动平台,SMP现在非常罕见.但请告诉我们一个专用的解码线程是否真的对您有意义.

audio multithreading decoding audio-streaming

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

是否可以使用OpenGL在RGB888中渲染?

我在各种设备上使用Android上的OpenGL玩了一段时间.除非我错了,否则默认渲染始终使用RGB565像素格式.

但是,我想使用RGB888渲染​​更准确的颜色.

所述GLSurfaceView文档中提到的两种方法,其涉及像素格式:

除非我错了,我想我只需要使用后者.或者SurfaceHolder.setFormat()在这里使用相关?

EGLConfigChooser类的文档提到了EGL10.eglChooseConfig(),以发现可用的配置.

在我的情况下,如果RGB888不可用,可以回退到RGB565,但我更喜欢这种情况.

那么,是否可以在大多数设备上使用RGB888?

这有什么兼容性问题或奇怪的错误吗?

您是否有正确可靠的方法来设置GLSurfaceView以渲染RGB888?

android opengl-es

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