2012-06-21 61 views
0

在某些特定情况下,Android会将我的服务杀死在包com.net.myspeechservice中,例如,当手机上有呼叫时,它会终止服务。 logcat显示我这些统计数据。Android杀死我的服务需要了解CPU状态

看起来很明显,它因CPU负载而死亡。

我没有得到的是CPU消耗的百分比是由我的应用程序引起的?它没有显示出来。

我不明白手段?

Load: 3.13/2.78/2.26 

如何从这些统计数据驴,以多大的比例是由我的应用程序引起的。

请指教。

感谢,

06-21 06:44:35.042: E/ActivityManager(88): ANR in com.net.myspeechservice 
06-21 06:44:35.042: E/ActivityManager(88): Reason: Executing service com.net.myspeechservice/.services.ManagementService 
06-21 06:44:35.042: E/ActivityManager(88): Load: 3.13/2.78/2.26 
06-21 06:44:35.042: E/ActivityManager(88): CPU usage from 10340ms to 0ms ago: 
06-21 06:44:35.042: E/ActivityManager(88): 44% 178/com.android.phone: 43% user + 1.8% kernel/faults: 179 minor 
06-21 06:44:35.042: E/ActivityManager(88): 25% 36/surfaceflinger: 21% user + 3.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 10% 38/mediaserver: 8.1% user + 2.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 5.1% 1496/android.process.acore: 2.8% user + 2.3% kernel/faults: 3984 minor 
06-21 06:44:35.042: E/ActivityManager(88): 3.3% 150/com.android.systemui: 3.3% user + 0% kernel/faults: 6 minor 
06-21 06:44:35.042: E/ActivityManager(88): 1.9% 45/adbd: 0.2% user + 1.6% kernel/faults: 420 minor 
06-21 06:44:35.042: E/ActivityManager(88): 0.6% 88/system_server: 0.3% user + 0.2% kernel/faults: 1 minor 
06-21 06:44:35.042: E/ActivityManager(88): 0% 6391/ekawas.blogspot.com: 0% user + 0% kernel/faults: 40 minor 
06-21 06:44:35.042: E/ActivityManager(88): 0.1% 35/rild: 0% user + 0% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 100% TOTAL: 82% user + 17% kernel + 0.1% softirq 
06-21 06:44:35.042: E/ActivityManager(88): CPU usage from 1521ms to 2139ms later: 
06-21 06:44:35.042: E/ActivityManager(88): 41% 178/com.android.phone: 40% user + 1.6% kernel/faults: 1 minor 
06-21 06:44:35.042: E/ActivityManager(88):  50% 178/m.android.phone: 48% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 235/RILReceiver: 1.6% user + 0% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 29% 36/surfaceflinger: 22% user + 6.4% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  22% 61/SurfaceFlinger: 19% user + 3.2% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 36/surfaceflinger: 1.6% user + 0% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 63/Binder Thread #: 1.6% user + 0% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 109/Binder Thread #: 0% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 1283/Binder Thread #: 0% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 16% 38/mediaserver: 11% user + 4.9% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  6.5% 1551/gle.mp3.decoder: 4.9% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  3.2% 1553/AudioTrackThrea: 1.6% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 72/AudioOut_1: 0% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  1.6% 1552/OMXCallbackDisp: 0% user + 1.6% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 9.6% 88/system_server: 4.8% user + 4.8% kernel 
06-21 06:44:35.042: E/ActivityManager(88):  8% 103/ActivityManager: 4.8% user + 3.2% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 1.6% 1496/android.process.acore: 0% user + 1.6% kernel/faults: 196 minor 
06-21 06:44:35.042: E/ActivityManager(88):  3.3% 1542/ApplicationsPro: 0% user + 3.3% kernel 
06-21 06:44:35.042: E/ActivityManager(88): 100% TOTAL: 82% user + 17% kernel 
+1

实际上,CPU负载并不重要。此消息指出您的应用/服务没有及时响应用户输入,因此被框架杀死。 ANR in com.net.myspeechservice 06-21 06:44:35.042:E/ActivityManager(88):原因:执行服务com.net.myspeechservice/.services.ManagementService ANR - 应用程序未响应。或者有时也称为应用程序冻结。如果您的活动无法足够快地处理触摸,就会发生这种情况。你需要检查你的应用程序的逻辑,看看是否有一个地方做了一些长时间的计算或任何死锁。 –

+0

事实上,它不会觉得,因为这发生在有来电时,我的活动甚至不可见。但是我有一个服务只运行.. – Ahmed

+0

“com.net.myspeechservice”这是你的包吗?只是想说清楚。该日志在该软件包中显示ANR问题。如果你的软件包不同,那么这个日志与你的服务被杀无关。在这种情况下,您的服务死亡的原因是android耗尽了可用内存并决定杀死可能会死的东西(后台应用程序而不是关键服务)。这可能发生,你需要做好准备。但是,您可以让您的服务在被杀后自动重新启动。为此,您应该从您的服务的onStartCommand()返回START_STICKY。 –

回答

0

负载线显示您实时运行的所有线程所需的CPU内核的数量。即1的负载意味着你在这段时间内充分利用单核。 5的加载意味着你需要5个内核来实时操作,或者如果你有两个内核,你将它们超载了150%。

Load: X/Y/Z 

负载显示为三个数字,以便在不同的时间范围内给出负载。它通常以1分钟,5分钟和15分钟的形式给出。

虽然我无法开始查看日志的其余部分,但不知道应用的软件包名称。虽然猜测它是ekawas.blogspot.com(从第二个快照中丢失),这表明来自您的应用程序的CPU负载不是问题。这可能是一个记忆问题。

+0

我的包名是com.net.myspeechservice在顶部 – Ahmed

+0

啊,没有看到。 – Drakekin

相关问题