Android应用程序在某些机型上启动有几率一直黑屏

============问题描述============

我们使用Mono for Android开发了一个App,发现在某些机型上(比如lenovo A3000-H)会打开会出现一直黑屏的情况,进不到程序的界面(同样也定位不到任何调试断点),而有些机型则不会。

通过仔细观察,发现在后台“当前运行程序”一栏,当成功启动时,程序所占体积是21mb左右。当启动失败时(一直黑屏),程序所占体积是9mb左右。

另外通过eclipse监控程序启动日志,对比发现了一些不同。

成功启动时的日志

02-24 16:00:47.038: I/ActivityManager(515): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.GDSCP.ModileEnforces/mobileenforces.BeginActivity} from pid 1016

02-24 16:00:47.073: W/Trace(515):   

02-24 16:00:47.078: I/BufferQueue(133): [unnamed-133-2248](this:0x41f5b448,api:0) BufferQueue

02-24 16:00:47.078: I/BufferQueue(133): [unnamed-133-2248](this:0x41f5b448,api:0) consumerConnect

02-24 16:00:47.078: I/BufferQueue(133): [unnamed-133-2248](this:0x41f5b448,api:0) setConsumerName: unnamed-133-2248

02-24 16:00:47.078: I/SurfaceTexture(133): [unnamed-133-2248](this:0x41f5e5e8,api:0) SurfaceTexture

02-24 16:00:47.078: I/BufferQueue(133): [unnamed-133-2248](this:0x41f5b448,api:0) setSynchronousMode: enabled=1

02-24 16:00:47.078: I/BufferQueue(133): [unnamed-133-2248](this:0x41f5b448,api:0) setDefaultBufferSize: w=1, h=1

02-24 16:00:47.078: I/BufferQueue(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5b448,api:0) setConsumerName: Starting com.GDSCP.ModileEnforces

02-24 16:00:47.080: W/Trace(515):   

02-24 16:00:47.085: I/BufferQueue(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5b448,api:0) setDefaultBufferSize: w=1024, h=552

02-24 16:00:47.088: W/Trace(515):   

02-24 16:00:47.093: E/Launcher(1016): new onSaveInstanceState <F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2>

02-24 16:00:47.094: E/Launcher(1016): onPause flag orientation falg        =2

02-24 16:00:47.097: W/Trace(515):   

  

02-24 16:00:47.109: I/BufferQueue(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5b448,api:0) connect: api=2

02-24 16:00:47.109: I/BufferQueue(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5b448,api:2) setSynchronousMode: enabled=1

02-24 16:00:47.109: I/BufferQueue(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5b448,api:2) new GraphicBuffer needed

02-24 16:00:47.113: I/GraphicBuffer(133): allocate buffer (w:1024 h:552 f:1) err(0)

02-24 16:00:47.115: I/ActivityManager(515): Start proc com.GDSCP.ModileEnforces for activity com.GDSCP.ModileEnforces/mobileenforces.BeginActivity: pid=2225 uid=10106 gids={50106, 3003, 1015, 1028}

02-24 16:00:47.117: W/Trace(515):   

02-24 16:00:47.117: W/Trace(515):   

02-24 16:00:47.118: I/BufferQueue(133):     [NEW] gb=0x41f63690, handle=0x41f63090, w=1024, h=552, s=1024, fmt=1

02-24 16:00:47.125: W/Trace(515):   

02-24 16:00:47.135: I/SurfaceTexture(133): [Starting com.GDSCP.ModileEnforces](this:0x41f5e5e8,api:2) [void* android::SurfaceTexture::createImage(EGLDisplay, const android::sp<android::GraphicBuffer>&)]

02-24 16:00:47.138: W/Trace(1016):   ///////////////////////

02-24 16:00:47.150: I/com.umeng.common.b(1016): Could not get location from GPS or Cell-id, lack ACCESS_COARSE_LOCATION or ACCESS_COARSE_LOCATION permission?

02-24 16:00:47.160: W/Trace(2225):   

02-24 16:00:47.160: W/Trace(2225):   

02-24 16:00:47.167: W/ADB_SERVICES(2431): create_local_service_socket() name=jdwp:2225

02-24 16:00:47.168: W/ADB_SERVICES(2431): looking for pid 2225 in JDWP process list return fds0(18) fds1(20)

02-24 16:00:47.168: W/ADB_SERVICES(2431): trying to write to JDWP socket=16 pid=2225 count=1 out_fds=20

02-24 16:00:47.182: W/Trace(515):   

02-24 16:00:47.184: W/Trace(515):   

02-24 16:00:47.184: I/WindowManager(515): Losing focus: Window{41b51e38 u0 com.lenovo.launcher/com.lenovo.launcher2.Launcher}

02-24 16:00:47.184: W/Trace(515):   

02-24 16:00:47.205: W/Trace(515):   

02-24 16:00:47.214: I/ActivityThread(2225): Pub com.GDSCP.ModileEnforces.mono.MonoRuntimeProvider.__mono_init__: mono.MonoRuntimeProvider

02-24 16:00:47.218: W/MonoDroid-Debugger(2225): Not starting the debugger as the timeout value has been reached; current-time: 1393228847  timeout: 1392886499

02-24 16:00:47.227: E/mono(2225): WARNING: The runtime version supported by this application is unavailable.

02-24 16:00:47.229: E/mono(2225): Using default runtime: v2.0.50727

02-24 16:00:47.242: I/SurfaceTextureClient(133): [STC::queueBuffer] (this:0x41ad6840) fps:0.19, dur:69222.88, max:69032.22, min:5.73

02-24 16:00:47.242: I/SurfaceTextureClient(133): [STC::queueBuffer] this:0x41ad6840, api:1, last queue time elapsed:69032.22

02-24 16:00:47.242: I/BufferQueue(133): [FramebufferSurface](this:0x41ad9008,api:1) [release] fps:0.19, dur:69222.92, max:69032.27, min:5.69

02-24 16:00:47.242: I/BufferQueue(133): [FramebufferSurface](this:0x41ad9008,api:1) [queue] fps:0.19, dur:69222.87, max:69032.27, min:5.61

02-24 16:00:47.250: W/libc(2225): WARNING: generic atexit() called from legacy shared library

02-24 16:00:47.263: W/monodroid-gc(2225): GREF GC Threshold: 46800

02-24 16:00:47.521: W/Trace(515):   

02-24 16:00:47.531: W/Trace(515):   

02-24 16:00:47.618: I/AppCheck(3425): oldcom.lenovo.launcher------------new:com.GDSCP.ModileEnforces

02-24 16:00:47.618: I/AppCheck(3425): runningTask------------action:com.lenovo.safecenter.activityswitch com.GDSCP.ModileEnforces com.lenovo.launcher

02-24 16:00:47.621: W/Trace(3425):   

02-24 16:00:47.621: I/LeemCenterReceiver(3425): onReceive()

02-24 16:00:47.622: I/AppCheck(3425): runningTask------------end

02-24 16:00:47.623: I/AppCheck(3425): recentTask------------action:com.lenovo.safecenter.activityswitch2 com.GDSCP.ModileEnforces com.lenovo.launcher

02-24 16:00:47.625: I/AppCheck(3425): recentTask------------end

02-24 16:00:47.626: I/LeemCenterReceiver(3425): newPkg interval == 1393228847625

02-24 16:00:47.626: I/LeemCenterReceiver(3425): cur == 1393228847626 bootTime == 0 time == 1393228847625

02-24 16:00:47.628: W/Trace(3425):   

02-24 16:00:47.628: W/Trace(3425):   

02-24 16:00:47.628: I/ydp(3425): pkg---->com.GDSCP.ModileEnforces

02-24 16:00:47.628: E/ydp(3425): checkApp pkgName:com.GDSCP.ModileEnforces

02-24 16:00:47.640: I/safepaymen(3425): clearNotify Pkg:com.lenovo.launcher

02-24 16:00:47.647: W/Trace(3425):   

02-24 16:00:47.647: W/Trace(3425):   

02-24 16:00:47.649: W/Trace(3425):   ////启动失败的顺序排位不同了

//先创建实例,再启动。而启动失败,则是先启动,再创建实例。

02-24 16:00:47.671: E/Launcher(1016): onTriMM<F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2><F2>

02-24 16:00:47.671: E/AppsCustomizeTabHost(1016): onTrimMemory reset       000000000000000000000097777766666666111111 

02-24 16:00:47.697: W/Parcel(515): Attempt to read object from Parcel 0x57357554 at offset 68 that is not in the object list

02-24 16:00:47.810: I/BufferQueue(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41f68008,api:1) disconnect: api=1

02-24 16:00:47.810: I/SurfaceTexture(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher] [virtual android::status_t android::SurfaceTexture::forceAuxConversionLocked()] mCurrentTexture:1, mCurrentBuf:0x41f874f8

02-24 16:00:47.810: I/BufferQueue(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41f68008,api:0) getReleasedBuffers: returning mask 0xffffffff

02-24 16:00:47.810: I/SurfaceTexture(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41e38b58,api:0) destroying EGLImage dpy=0x1 img=0x41e38950

02-24 16:00:47.811: I/SurfaceTexture(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41e38b58,api:0) destroying EGLImage dpy=0x1 img=0x4203c270

02-24 16:00:47.811: I/SurfaceTexture(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41e38b58,api:0) destroying EGLImage dpy=0x1 img=0x41f877b8

02-24 16:00:47.812: I/SurfaceTexture(133): [com.lenovo.launcher/com.lenovo.launcher2.Launcher](this:0x41e38b58,api:0) destroying EGLImage dpy=0x1 img=0x41f7cab8

02-24 16:00:47.818: I/mono-stdout(2225):  

02-24 16:00:47.836: I/mono-stdout(2225):  16:00:47 | info | >>>Initialize the database>>>> 02-24 16:00:47.836: I/mono-stdout(2225):  //启动成功了调用对应的输出

......其后略

启动失败时的日志贴在2L

============解决方案1============

别费时间,用c#开发安卓是自己和自己过不去

============解决方案2============

我咋看到这么多ERROR。。

时间: 2024-10-25 02:29:27

Android应用程序在某些机型上启动有几率一直黑屏的相关文章

Android 启动APP时黑屏白屏的三个解决方案

你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单,简历一个简单的例子就可以理解了. 其实,黑屏或者白屏这里并不是不正常,而是还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景.代码如下,可以自己写个小demo就理解了. @Override protected void onCreate(Bundle saved

Android 启动APP时黑屏白屏的三个解决方案(转载)

你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单,简历一个简单的例子就可以理解了. 其实,黑屏或者白屏这里并不是不正常,而是还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景.代码如下,可以自己写个小demo就理解了. 1 2 3 4 5 6 7 8 9 10 11 12 @Override protected

VMware 启动Ubuntu时黑屏

描述 之前还好好的,突然VMware启动虚拟机时黑屏,一直卡着无法正常开启 解决方法 1.以管理员身份启动"命令提示符" 2.输入 netsh winsock reset 3.重启计算机 即可解决 原因解析 虚拟机与主机之间的通信基本上采用socket方式(这里的socket一般指所有的socket,包括本地.网络等)程序通过LSP将自己的DLL注入到系统的TCP/IP堆栈中.如果在程序退出时未恢复DLL,或恢复失败,或未完全恢复DLL,则DLL的剩余部分会影响整个TCP/IP堆栈,并

Android应用程序组件Content Provider的启动过程源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进程中的,每一个Content Provider在系统中只有一个实例存在,其它应用程序首先要找到这个实例,然后才能访问它的数据.那么,系统中的Conten

Qt for Android 启动短暂的黑屏或白屏问题如何解决?

解决方法一: 使用透明主题 点击项目 -> 在 构建设置 里面找到 Build Android APK 栏目,点击 create templates 创建一个 AndroidManifest.xml <?xml version="1.0"?> <manifest package="org.qtproject.example" xmlns:android="http://schemas.android.com/apk/res/andr

iOS学习——启动App界面黑屏

之前自己跟着书上学习,书上会有示例程序. 其中有些示例程序,要求创建一个Empty Application,可是由于书中使用的Xcode版本低些,而我使用了最新的Xcode,根本找不到Empty Application这个选项. 我想,既然没有Empty Application,那我创建一个Single View Application,然后把里面一些东西删了,再照着书上那样做吧. 其中把Main.storyboard文件也删了. 之后创建一个新的Main.storyboard,然后拖一个Vie

Android 字体颜色在一些机型上不适配(textcolor失效)

最近在参加一个创业项目的开发,其中在适配Android4.4版本时候遇到一个问题,本身title是白色字体,并且标签栏里面的字是绿色的,但是到了4.4手机上就变成了黑色. 也就是说textcolor并没有起作用,textview采用了默认的颜色. 最后查到了原因,原来是support-design包版本太高的缘故,导致还没有兼容4.4 将 更改为低版本的即可

Android应用程序组件Content Provider的共享数据更新通知机制分析

在Android系统中,应用程序组件Content Provider为不同的应用程序实现数据共享提供了基础设施,它主要通过Binder进程间通信机制和匿名共享内存机制来实现的.关于数据共享的另一个 话题便是数据更新通知机制了,即如果一个应用程序对共享数据做了修改,它应该如何通知其它正在使用这些共享数据的应用程序呢?本文将分析Content Provider的共享数据更新通知机制,为读者解答这个问题. Android应用程序组件Content Provider中的数据更新通知机制和Android系

Android开发之解决APP启动白屏或者黑屏闪现的问题

在做搜芽的过程中,发现那个外包人缘做的不行,因为启动的时候会停顿,然后白屏一会,联想到几个月前我在我的三僚企业通信软件里面拉起9K-Mail的时候也会黑屏,所以决定学习一下.解决一下.这不,万能的网络还是非常有用的. 在这里总结一下. (参考及转载:http://www.2cto.com/kf/201409/339293.html) 欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式an