2011-09-09 61 views
0

我是一个非常棒的Android开发世界,同时也是Java,我正在开发和在“X”分钟后挂起呼叫的应用程序。Android服务死亡,然后自动重新启动,并且工作正常

我做了一个BroadcastReceiver来捕捉新的呼叫,然后调用睡眠“X”分钟的服务,然后挂断电话。

我的问题是,当BradcastReceiver启动服务时,服务运行,但约10-12秒后它死了,然后自动启动完成罚款。

这是我的代码:

广播接收器

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.TelephonyManager; 

public class PhoneCallReceiverOutgoing extends BroadcastReceiver { 

public void onReceive(Context context, Intent intent) { 

    // Get extra values 
    String dialedNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER).toString(); 

    if (dialedNumber != null) { 

     System.out.println("|#| **** PhoneCallReceiverOut - New call to: " + dialedNumber + " **** |#|"); 
     System.out.println("|#| **** PhoneCallReceiverOut - Se inicia el Servicio **** |#|"); 
     //Intent serviceIntent = new Intent(context,PhoneCallService.class); 
     Intent serviceIntent = new Intent(); 
     serviceIntent.setClass(context,PhoneCallService.class); 
      context.startService(serviceIntent); 
      System.out.println("|#| **** PhoneCallReceiverOut - Saliendo del Receiber **** |#|");      
     } 
    } 
} 

这是我的服务:

import java.lang.reflect.Method; 

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.os.IBinder; 
import android.os.SystemClock; 
import android.telephony.TelephonyManager; 

import com.android.internal.telephony.ITelephony; 

public class PhoneCallService extends Service { 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    System.out.println("|#| **** PhoneCallService - onBind **** |#|"); 
    return null; 
} 


public void onCreate() { 
    // Do something 
    super.onCreate(); 
    System.out.println("Service init"); 
} 

public void onStart(Intent intent, int serviceId) { 

    super.onStart(intent, serviceId); 
    System.out.println("|#| **** PhoneCallService - Starting service **** |#|"); 

    // Testing with 2 minutes 
    int minutes = 2,seconds = 0; 
    seconds = minutes * 60000; 
    System.out.println("|#| **** PhoneCallService - End call in : " + minutes + " minutes (" + seconds + " seconds) **** |#|"); 
    SystemClock.sleep(seconds); 

    TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    try { 
     Class c = Class.forName(tm.getClass().getName()); 
     Method m = c.getDeclaredMethod("getITelephony"); 
     m.setAccessible(true); 
     ITelephony telephonyService = (ITelephony)m.invoke(tm); 
     telephonyService.endCall();    
    } catch(Exception e) { e.printStackTrace(); } 

    stopSelf(); 
} 


public void onResume() { 
    System.out.println("|#| **** PhoneCallService - onResume() **** |#|"); 

} 
@Override 
public void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    System.out.println("|#| **** PhoneCallService - Finishing service **** |#|"); 

} 
} 

这是我在logcat中看到日志:

I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:88642536 cmp=com.android.phone/.PrivilegedOutgoingCallBroadcaster } 
V/OutgoingCallBroadcaster( 121): onCreate: this = [email protected], icicle = null 
V/OutgoingCallBroadcaster( 121): - getIntent() = Intent { act=android.intent.action.CALL_PRIVILEGED dat=tel:88642536 cmp=com.android.phone/.PrivilegedOutgoingCallBroadcaster } 
V/OutgoingCallBroadcaster( 121): - configuration = { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=3} 
D/PhoneApp( 121): pulse screen lock 
D/PhoneUtils( 121): checkAndCopyPhoneProviderExtras: some or all extras are missing. 
V/OutgoingCallBroadcaster( 121): Broadcasting intent Intent { act=android.intent.action.NEW_OUTGOING_CALL (has extras) }. 
I/System.out( 597): |#| **** PhoneCallReceiverOut - New call to: 88642536 **** |#| 
I/System.out( 597): |#| **** PhoneCallReceiverOut - Se inicia el Servicio **** |#| 
I/System.out( 597): |#| **** PhoneCallReceiverOut - Saliendo del Receiber **** |#| 
I/System.out( 597): Service init 
V/OutgoingCallReceiver( 121): doReceive: Intent { act=android.intent.action.NEW_OUTGOING_CALL (has extras) } 
V/OutgoingCallReceiver( 121): CALL to 88642536 proceeding. 
D/PhoneUtils( 121): checkAndCopyPhoneProviderExtras: some or all extras are missing. 
I/System.out( 597): |#| **** PhoneCallService - Starting service **** |#| 
I/System.out( 597): |#| **** PhoneCallService - End call in : 2 minutes (120000 seconds) **** |#| 
V/OutgoingCallReceiver( 121): doReceive(): calling startActivity: Intent { act=android.intent.action.CALL dat=tel:88642536 flg=0x10000000 cmp=com.android.phone/.InCallScreen (has extras) } 
I/ActivityManager( 59): Starting activity: Intent { act=android.intent.action.CALL dat=tel:88642536 flg=0x10000000 cmp=com.android.phone/.InCallScreen (has extras) } 
D/InCallScreen( 121): onNewIntent: intent=Intent { act=android.intent.action.CALL dat=tel:88642536 flg=0x10c00000 cmp=com.android.phone/.InCallScreen (has extras) } 
D/InCallScreen( 121): internalResolveIntent: action=android.intent.action.CALL 
I/AudioService( 59): AudioFocus requestAudioFocus() from AudioFocus_For_Phone_Ring_And_Calls 
D/AudioHardwareInterface( 34): setMode(IN_CALL) 
D/InCallScreen( 121): onResume()... 
D/PhoneApp( 121): disable status bar 
D/PhoneApp( 121): StatusBarManager.DISABLE_EXPAND 
D/StatusBar( 59): DISABLE_EXPAND: yes 
D/InCallScreen( 121): - onResume: initial status = SUCCESS 
D/InCallScreen( 121): setInCallScreenMode: NORMAL 
D/InCallScreen( 121): syncWithPhoneState()... 
D/PhoneUtils( 121): dumpCallState(): 
D/PhoneUtils( 121): - Phone: Handler{44ec0e90}, name = GSM, state = OFFHOOK 
D/PhoneUtils( 121): - FG call: DIALING isAlive true isRinging false isDialing true isIdle false hasConnections true 
D/PhoneUtils( 121): - BG call: IDLE isAlive false isRinging false isDialing false isIdle true hasConnections false 
D/PhoneUtils( 121): - RINGING call: IDLE isAlive false isRinging false isDialing false isIdle true hasConnections false 
D/PhoneUtils( 121): - hasRingingCall false hasActiveCall true hasHoldingCall false allLinesTaken false 
D/PhoneUtils( 121): - Ringer state: false 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing true, showingDisc false) 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing true, showingDisc false) 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing true, showingDisc false) 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing true, showingDisc false) 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing true, showingDisc false) 
W/InputManagerService( 59): Starting input on non-focused client [email protected] (uid=10000 pid=160) 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = false (isRinging false, isDialing false, showingDisc false) 
W/ActivityManager( 59): Timeout of broadcast BroadcastRecord{44ffa778 android.intent.action.PHONE_STATE} - [email protected] 
W/ActivityManager( 59): Receiver during timeout: ResolveInfo{450dc090 com.shwordfishland.calltimecontrol.PhoneCallReceiver p=0 o=0 m=0x108000} 
I/Process ( 59): Sending signal. PID: 597 SIG: 3 
I/dalvikvm( 597): threadid=3: reacting to signal 3 
I/dalvikvm( 597): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 59 SIG: 3 
I/dalvikvm( 59): threadid=3: reacting to signal 3 
I/dalvikvm( 59): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 117 SIG: 3 
I/dalvikvm( 117): threadid=3: reacting to signal 3 
I/dalvikvm( 117): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 121 SIG: 3 
I/dalvikvm( 121): threadid=3: reacting to signal 3 
I/dalvikvm( 121): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 160 SIG: 3 
I/dalvikvm( 160): threadid=3: reacting to signal 3 
I/dalvikvm( 160): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 263 SIG: 3 
I/dalvikvm( 263): threadid=3: reacting to signal 3 
I/dalvikvm( 263): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 254 SIG: 3 
I/dalvikvm( 254): threadid=3: reacting to signal 3 
I/dalvikvm( 254): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 461 SIG: 3 
I/dalvikvm( 461): threadid=3: reacting to signal 3 
I/dalvikvm( 461): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 132 SIG: 3 
I/dalvikvm( 132): threadid=3: reacting to signal 3 
I/dalvikvm( 132): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 192 SIG: 3 
I/dalvikvm( 192): threadid=3: reacting to signal 3 
I/dalvikvm( 192): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 166 SIG: 3 
I/dalvikvm( 166): threadid=3: reacting to signal 3 
I/dalvikvm( 166): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 229 SIG: 3 
I/dalvikvm( 229): threadid=3: reacting to signal 3 
I/dalvikvm( 229): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 219 SIG: 3 
I/dalvikvm( 219): threadid=3: reacting to signal 3 
I/dalvikvm( 219): Wrote stack traces to '/data/anr/traces.txt' 
E/ActivityManager( 59): ANR in com.shwordfishland.calltimecontrol 
E/ActivityManager( 59): Reason: Broadcast of Intent { act=android.intent.action.PHONE_STATE flg=0x20000000 cmp=com.shwordfishland.calltimecontrol/.PhoneCallReceiver (has extras) } 
E/ActivityManager( 59): Load: 0.7/0.22/0.18 
E/ActivityManager( 59): CPU usage from 28840ms to 86ms ago: 
E/ActivityManager( 59): system_server: 20% = 14% user + 5% kernel/faults: 1840 minor 
E/ActivityManager( 59): m.android.phone: 6% = 5% user + 1% kernel/faults: 867 minor 
E/ActivityManager( 59): adbd: 3% = 0% user + 3% kernel/faults: 1 minor 
E/ActivityManager( 59): d.process.acore: 3% = 2% user + 0% kernel/faults: 540 minor 
E/ActivityManager( 59): logcat: 0% = 0% user + 0% kernel/faults: 4 minor 
E/ActivityManager( 59): mediaserver: 0% = 0% user + 0% kernel/faults: 11 minor 
E/ActivityManager( 59): d.process.media: 0% = 0% user + 0% kernel/faults: 47 minor 
E/ActivityManager( 59): ronsoft.openwnn: 0% = 0% user + 0% kernel/faults: 30 minor 
E/ActivityManager( 59): id.defcontainer: 0% = 0% user + 0% kernel/faults: 47 minor 
E/ActivityManager( 59): qemud: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): ndroid.launcher: 0% = 0% user + 0% kernel/faults: 43 minor 
E/ActivityManager( 59): m.android.email: 0% = 0% user + 0% kernel/faults: 47 minor 
E/ActivityManager( 59): .quicksearchbox: 0% = 0% user + 0% kernel/faults: 45 minor 
E/ActivityManager( 59): com.svox.pico: 0% = 0% user + 0% kernel/faults: 43 minor 
E/ActivityManager( 59): ndroid.settings: 0% = 0% user + 0% kernel/faults: 43 minor 
E/ActivityManager( 59): roid.alarmclock: 0% = 0% user + 0% kernel/faults: 43 minor 
E/ActivityManager( 59): zygote: 0% = 0% user + 0% kernel/faults: 58 minor 
E/ActivityManager( 59): servicemanager: 0% = 0% user + 0% kernel/faults: 5 minor 
E/ActivityManager( 59): rild: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): +calltimecontrol: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): +calltimecontrol: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): TOTAL: 39% = 25% user + 14% kernel + 0% softirq 
I/Process ( 59): Sending signal. PID: 597 SIG: 9 
I/ActivityManager( 59): Process com.shwordfishland.calltimecontrol (pid 597) has died. 
W/ActivityManager( 59): Scheduling restart of crashed service com.shwordfishland.calltimecontrol/.PhoneCallService in 22608ms 
D/dalvikvm( 59): GC_FOR_MALLOC freed 4066 objects/612200 bytes in 171ms 
I/dalvikvm-heap( 59): Grow heap (frag case) to 6.336MB for 168632-byte allocation 
D/dalvikvm( 59): GC_FOR_MALLOC freed 182 objects/8984 bytes in 187ms 
D/dalvikvm( 160): GC_EXPLICIT freed 2956 objects/202280 bytes in 147ms 
I/ActivityManager( 59): Start proc com.shwordfishland.calltimecontrol for service com.shwordfishland.calltimecontrol/.PhoneCallService: pid=604 uid=10037 gids={1015} 
I/System.out( 604): Service init 
I/System.out( 604): |#| **** PhoneCallService - Starting service **** |#| 
I/System.out( 604): |#| **** PhoneCallService - End call in : 2 minutes (120000 seconds) **** |#| 
W/ActivityManager( 59): Timeout executing service: ServiceRecord{450eafc8 com.shwordfishland.calltimecontrol/.PhoneCallService} 
I/Process ( 59): Sending signal. PID: 604 SIG: 3 
I/dalvikvm( 604): threadid=3: reacting to signal 3 
I/dalvikvm( 604): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 59 SIG: 3 
I/dalvikvm( 59): threadid=3: reacting to signal 3 
I/dalvikvm( 59): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 117 SIG: 3 
I/dalvikvm( 117): threadid=3: reacting to signal 3 
I/dalvikvm( 117): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 121 SIG: 3 
I/dalvikvm( 121): threadid=3: reacting to signal 3 
I/dalvikvm( 121): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 160 SIG: 3 
I/dalvikvm( 160): threadid=3: reacting to signal 3 
I/dalvikvm( 160): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 263 SIG: 3 
I/dalvikvm( 263): threadid=3: reacting to signal 3 
I/dalvikvm( 263): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 254 SIG: 3 
I/dalvikvm( 254): threadid=3: reacting to signal 3 
I/dalvikvm( 254): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 461 SIG: 3 
I/dalvikvm( 461): threadid=3: reacting to signal 3 
I/dalvikvm( 461): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 132 SIG: 3 
I/dalvikvm( 132): threadid=3: reacting to signal 3 
I/dalvikvm( 132): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 192 SIG: 3 
I/dalvikvm( 192): threadid=3: reacting to signal 3 
I/dalvikvm( 192): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 166 SIG: 3 
I/dalvikvm( 166): threadid=3: reacting to signal 3 
I/dalvikvm( 166): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 229 SIG: 3 
I/dalvikvm( 229): threadid=3: reacting to signal 3 
I/dalvikvm( 229): Wrote stack traces to '/data/anr/traces.txt' 
I/Process ( 59): Sending signal. PID: 219 SIG: 3 
I/dalvikvm( 219): threadid=3: reacting to signal 3 
I/dalvikvm( 219): Wrote stack traces to '/data/anr/traces.txt' 
E/ActivityManager( 59): ANR in com.shwordfishland.calltimecontrol 
E/ActivityManager( 59): Reason: Executing service com.shwordfishland.calltimecontrol/.PhoneCallService 
E/ActivityManager( 59): Load: 0.49/0.23/0.19 
E/ActivityManager( 59): CPU usage from 44174ms to 115ms ago: 
E/ActivityManager( 59): system_server: 11% = 8% user + 3% kernel/faults: 249 minor 
E/ActivityManager( 59): m.android.phone: 4% = 3% user + 0% kernel/faults: 31 minor 
E/ActivityManager( 59): adbd: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): d.process.acore: 0% = 0% user + 0% kernel/faults: 66 minor 
E/ActivityManager( 59): logcat: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): d.process.media: 0% = 0% user + 0% kernel/faults: 9 minor 
E/ActivityManager( 59): id.defcontainer: 0% = 0% user + 0% kernel/faults: 9 minor 
E/ActivityManager( 59): zygote: 0% = 0% user + 0% kernel/faults: 37 minor 
E/ActivityManager( 59): m.android.email: 0% = 0% user + 0% kernel/faults: 8 minor 
E/ActivityManager( 59): ndroid.launcher: 0% = 0% user + 0% kernel/faults: 7 minor 
E/ActivityManager( 59): .quicksearchbox: 0% = 0% user + 0% kernel/faults: 8 minor 
E/ActivityManager( 59): com.svox.pico: 0% = 0% user + 0% kernel/faults: 7 minor 
E/ActivityManager( 59): ndroid.settings: 0% = 0% user + 0% kernel/faults: 7 minor 
E/ActivityManager( 59): qemud: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): ronsoft.openwnn: 0% = 0% user + 0% kernel/faults: 7 minor 
E/ActivityManager( 59): roid.alarmclock: 0% = 0% user + 0% kernel/faults: 7 minor 
E/ActivityManager( 59): +calltimecontrol: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): +calltimecontrol: 0% = 0% user + 0% kernel 
E/ActivityManager( 59): TOTAL: 18% = 12% user + 5% kernel + 0% irq + 0% softirq 
I/Process ( 59): Sending signal. PID: 604 SIG: 9 
I/ActivityManager( 59): Process com.shwordfishland.calltimecontrol (pid 604) has died. 
W/ActivityManager( 59): Scheduling restart of crashed service com.shwordfishland.calltimecontrol/.PhoneCallService in 90432ms 
D/dalvikvm( 59): GC_FOR_MALLOC freed 1819 objects/820856 bytes in 157ms 
D/CallNotifier( 121): stopRing()... (OFFHOOK state) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/InCallScreen( 121): onPhoneStateChanged()... 
D/InCallScreen( 121): updateScreen()... 
D/InCallScreen( 121): - updateScreen: updating the in-call UI... 
D/PhoneApp( 121): updateWakeState: callscreen true, dialer false, speaker false... 
D/PhoneApp( 121): updateWakeState: keepScreenOn = true (isRinging false, isDialing false, showingDisc true) 
I/AudioService( 59): AudioFocus abandonAudioFocus() from AudioFocus_For_Phone_Ring_And_Calls 
D/CallNotifier( 121): DISCONNECT 
D/CallNotifier( 121): - onDisconnect: cause = LOCAL, incoming = false, date = 1315611026140 
I/ActivityManager( 59): Start proc com.shwordfishland.calltimecontrol for broadcast com.shwordfishland.calltimecontrol/.PhoneCallReceiver: pid=611 uid=10037 gids={1015} 
D/CallNotifier( 121): stopRing()... (onDisconnect) 
D/Ringer ( 121): stopRing()... 
D/Ringer ( 121): - stopRing: null mRingHandler! 
D/CallNotifier( 121): - onDisconnect(): logNumber set to: 88642536 
D/CallNotifier( 121): - getPresentation(): ignoring connection's presentation: 1 
D/CallNotifier( 121): - getPresentation: presentation: 1 
D/InCallScreen( 121): onDisconnect: incoming: false state: DISCONNECTED post dial state: COMPLETE, cause=LOCAL 

我不确定是不是他是做这件事的最好方式,但这是我用我有限的知识做的。

任何帮助或建议是真的很感激。

此致敬礼。

JR

回答

1

当一个Intent触发您的BroadcastReceiver,直至BroadcastReceiveronReceive()结束后,您的系统唤醒。当此方法结束时,系统资源将回到包括CPU在内的睡眠状态。由于您从onReceive()开始提供服务,服务将继续运行,直到CPU运行,但停止服务也会停止。为了处理这种情况,您必须在onReceive()中调用CPU唤醒锁并将其传递给服务,服务将在作业完成时释放它。希望这可以帮助!

Check also here:Problem acquiring wake lock from broadcast receiver

+0

它对您有帮助吗? –

相关问题