2011-09-09 140 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

它對您有幫助嗎? –

相關問題