开发者

Android service die then auto-restart and works fine

I'm new in the awesome Android development world and also in Java and I'm tying to develop and applications that hang a call after "X" minutes.

I did an BroadcastReceiver to catch the new calls and then call a service that sleep "X" minutes and then hang the call.

My issue is that when the BradcastReceiver start the service, the service run but after about 10-12 seconds it's died then automatically is started finished fine.

This is my code:

BroadcastReceiver

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 **** |#|");                       
        }
    }
}

This is my service:

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 **** |#|");

}
}

And this is the log that I saw in 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 = com.android.phone.OutgoingCallBroadcaster@44f70190, 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 com.android.internal.view.IInputMethodClient$Stub$Proxy@44fb1e78 (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} - receiver=android.os.BinderProxy@4512e960
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 trac开发者_JS百科es 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

I'm not sure is this is the best way to do that but it's that I did with my limited knowledge.

Any help or advice is really appreciate.

Best regards.

JR


When an Intent fires your BroadcastReceiver, your system wakes up until the onReceive() of the BroadcastReceiver is finished. When this method finishes, then the system resources go back to sleep including the CPU. Since you start a service from the onReceive(), the service will continue to run until the CPU is running, but it stops your service will also stop. In order to handle such a case you have to acqire a CPU wakelock in the onReceive() and pass it to the Service, which will release it when the job is done. Hope this helps!

Check also here: Problem acquiring wake lock from broadcast receiver

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜