`
hold_on
  • 浏览: 455695 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Unable to launch com.* for service Intent { cmp=com.*/.* }: process is bad

阅读更多

 最近的项目需要用到服务端收集客户端崩溃的详细异常log数据:

 

之前也做过,感觉很轻松,没想到遇到问题了,还纠结了半天:

 以下是关键log日志

05-04 20:28:42.409: W/ActivityManager(374): Process com.example.service has crashed too many times: killing!
05-04 20:28:42.409: I/ActivityManager(374): Killing proc 20556:com.example.service/u0a10080: crash
05-04 20:28:43.323: W/ActivityManager(374): Unable to launch app com.example.service/10080 for service Intent { cmp=com.example.service/.service.TestService }: process is bad

 

问题介绍:

a、带界面的应用,当应用拥有当前界面时发生RuntimeException,可以被alarm和BroadcastReceiver唤醒;

b、统计器后台运行:产生RuntimeException之后再也起不来了(不可以被alarm和BroadcastReceiver再次唤醒);

 

问题查找过程:

推荐一个在线查看源码的网站,很方便

http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/

 

1、 关键词搜索:process is bad

2、发现出处

 class: com.android.server.am.ActivityManagerService 
    method: private final ContentProviderHolder getContentProviderImpl(IApplicationThread caller,
        String name, IBinder token, boolean stable, int userId);

    具体位置:

   

ProcessRecord proc = startProcessLocked(cpi.processName,
        cpr.appInfo, false, 0, "content provider",
        new ComponentName(cpi.applicationInfo.packageName,
                cpi.name), false, false);
if (proc == null) {
    Slog.w(TAG, "Unable to launch app "
            + cpi.applicationInfo.packageName + "/"
            + cpi.applicationInfo.uid + " for provider "
            + name + ": process is bad");
    return null;
}

 

 

 

 

3、继续跟踪 com.android.server.am.ActivityManagerService 的 startProcessLocked ,原因就在里头;

    

 

 

原因:

参考:

 

	class :	com.android.server.am.ActivityManagerService
	method: final ProcessRecordstartProcessLocked(String processName,
			ApplicationInfo info, boolean knownToBeDead, int intentFlags,
			String hostingType, ComponentName hostingName,
			boolean allowWhileBooting, boolean isolated) {}

 
   程序发生RuntimeException,被crash掉,如果被重新起来,这个时候判断是否是后台应用,如果是后台应用则silently fail.

 

 

   关键代码:红色标记注释

 

	if (!isolated) {
    if ((intentFlags&Intent.FLAG_FROM_BACKGROUND) != 0) {
        // If we are in the background, then check to see if this process
        // is bad.  If so, we will just silently fail.
        if (mBadProcesses.get(info.processName, info.uid) != null) {
            if (DEBUG_PROCESSES) Slog.v(TAG, "Bad process: " + info.uid
                    + "/" + info.processName);
            return null;
        }
    } else {
        // When the user is explicitly starting a process, then clear its
        // crash count so that we won't make it bad until they see at
        // least one crash dialog again, and make the process good again
        // if it had been bad.
        if (DEBUG_PROCESSES) Slog.v(TAG, "Clearing bad process: " + info.uid
                + "/" + info.processName);
        mProcessCrashTimes.remove(info.processName, info.uid);
        if (mBadProcesses.get(info.processName, info.uid) != null) {
            EventLog.writeEvent(EventLogTags.AM_PROC_GOOD,
                    UserHandle.getUserId(info.uid), info.uid,
                    info.processName);
            mBadProcesses.remove(info.processName, info.uid);
            if (app != null) {
                app.bad = false;
            }
        }
    }

 

 

 

0
0
分享到:
评论
1 楼 dufangyu1990 2015-07-21  
请问该如何解决呢?

相关推荐

    cirris operation manual

    It is designed to assist users in understanding the functionalities of the tester, ensuring they can effectively utilize it for cable testing purposes. #### Cirris Customer Support Cirris Systems ...

    LaunchImage.zip

    在iOS应用开发中,"LaunchScreen.storyboard"是用于创建应用程序启动界面的关键文件。这个启动界面,也称为启动图或启动画面,是用户打开应用时首先看到的屏幕,它不仅提升了用户体验,还能够展示品牌风格。在iOS 13...

    waf-help.docx

    11. **--cwd=CWD_LAUNCH**:设置程序运行时的工作目录。 12. **--enable-gcov**:启用代码覆盖率分析。注意:此选项仅在与之配合的特定编译条件下有效。 这些命令和选项是NS3中WAF的核心组成部分,它们使得开发者...

    The required Server component failed to start so Tomcat is unable to start问题解决

    然而,在配置和运行Tomcat时,开发者常常会遇到各种问题,其中“`The required Server component failed to start so Tomcat is unable to start`”是一个常见的错误提示,这通常意味着Tomcat在启动过程中遇到了问题...

    安卓手机购物清单

    安卓手机购物清单 The applications require: * The latest Android 2.3 SDK * Ant 1.8 (if you are using ant) Most projects depend on the OI ...* the OI Distribution Library is included automatically.

    泰牛程序员PHP编程掌握的英语词汇(4)韩顺平整理资料.pdf

    16. **Launch**:启动,开始运行一个程序或进程。 17. **Skip**:跳过,忽略某个步骤或操作。 18. **Slave**:从属,常用于数据库中的主从复制,指从服务器。 19. **Master**:主控,通常指在主从结构中的控制端...

    初级商务英语课文单词整理.doc

    57. **Launch**:发射,启动,通常指产品上市或新项目的开始。 58. **Photocopy**:影印,复印件,复制文件或其他印刷材料的过程。 59. **Branch**:分支,分公司,指企业在一个地区的分部。 60. **Market Project ...

    安卓手机文件管理

    简单的安卓手机文件管理 Jan 17, 2011 The applications require: * The latest Android 2.3 SDK * Ant 1.8 (if you are using ant) ...* the OI Distribution Library is included automatically.

    小程序版高德地图完美运行demo

    在这个案例中,我们需要在小程序的管理后台,将`https://restapi.amap.com`添加到"服务器域名"的白名单中。这是为了确保小程序能够安全地与高德地图的服务器进行通信,获取地图服务的相关数据,如定位、路径规划等。...

    Storm配置项详解.docx

    15. **nimbus.task.launch.secs**:task启动时的特殊超时设置,用于在首次心跳前临时替代nimbus.task.timeout.secs。 16. **nimbus.reassign**:当nimbus检测到task失败时是否自动重新分配,默认为true。 17. **...

    webplugin海康网站视频插件

    【海康网站视频插件详解】 “Webplugin海康网站视频插件”是一款专为海康威视(Hikvision)开发的浏览器扩展程序,旨在优化用户在访问海康威视官方网站时观看监控视频的体验。这款插件使得用户无需安装额外的桌面...

    12月16日17日词汇.pdf

    25. **Launch**:启动或发起,常用于产品发布、项目启动等场景。 26. **Core**:中心或核心,可以指事物的本质或重要组成部分。 27. **Modify**、**Alter**、**Convert**:动词,均表示“改变”,但各有不同的侧...

    MATLAB实验教案11.pdf

    3. **矩阵运算**:包括加减乘除、矩阵乘法(`*`)、点乘(`.*`)、点除(`./`)等。 4. **矩阵逆**:使用`inv(A)`计算矩阵A的逆。 5. **矩阵的乘方**:`A^2`表示A的平方,`A^n`表示A的n次方。 6. **关系逻辑操作**:如`==`...

    英语四级词汇精简复习

    - 例句:The initial plan was to launch the product in April. - **拓展**:*initialize*(初始化)、*initially*(最初)。 3. **modern** (adj.):现代的;当代的。 - 例句:Modern technology has ...

    CCS快捷键操作

    2. **Manage bookmarks Edit bookmarks (launch Bookmark dialog box)Alt+F2**:管理书签,启动书签对话框。 3. **Toggle bookmarkCtrl+F2**:切换当前行的书签状态。 4. **Toggle bookmark and edit itCtrl+Alt+F2*...

    应用源码之BackgroundViewPager实现桌面launch移动.zip

    4. **Intent和IntentFilter**:Intent在Android中用于启动其他组件或传递数据,IntentFilter则定义了BroadcastReceiver可以响应的Intent类型。在这里,可能使用IntentFilter来匹配系统发送的特定广播,如用户离开...

    VSCode launch.json配置详细教程.zip

    "outFiles": ["${workspaceFolder}/dist/**/*.js"], "env": {} } ] } ``` 1. **version**:表示`launch.json`的版本,保持默认即可。 2. **configurations**:包含一组调试配置。 3. **type**:指定调试器类型...

    Android、Java 面试突破专题(无参考答案).docx

    14. **Service与Activity通信**:通过Binder、意图(Intent)、Messenger、AIDL等方式。 15. **Android版本API差异**:不同版本API提供了新功能,开发者需根据目标设备适配。 16. **后台服务不被杀死**:设置前台...

    Rickyhong之120个Web开发工具箱介绍

    48. **Launch Splash**:为未上线的网站生成欢迎页面,提升用户体验。 以上仅是120款工具中的部分代表,每一款都有其独特的价值,开发者可以根据项目需求选择合适的工具,提升开发效率和产品质量。持续关注新兴工具...

Global site tag (gtag.js) - Google Analytics