Android 从接收方调用时服务未处理意图

Android 从接收方调用时服务未处理意图,android,service,broadcastreceiver,intentservice,Android,Service,Broadcastreceiver,Intentservice,我很少遇到这样的问题:手机会进入一种状态(称为“有趣的状态”),我的Intent Services无法从广播接收器获得startService命令。(是的,清单中定义了接收者和服务) 在本例中,我正在侦听推送通知,然后调用CheckinService。 接收人: public class PushReceiver extends BroadcastReceiver { private static final String LOG_TAG = "push_receiver"; @Overri

我很少遇到这样的问题:手机会进入一种状态(称为“有趣的状态”),我的Intent Services无法从广播接收器获得startService命令。(是的,清单中定义了接收者和服务)

在本例中,我正在侦听推送通知,然后调用CheckinService。 接收人:

public class PushReceiver extends BroadcastReceiver {

private static final String LOG_TAG = "push_receiver";

@Override
public void onReceive(Context context, Intent intent) {
    logger.putExtra("debug", "Received Push");

    Intent serviceIntent = new Intent(context, CheckinService.class);
    context.startService(serviceIntent);

    logger.putExtra("debug", "Sent to Service");
}
服务:

public class CheckinService extends IntentService {
    private static final String LOG_TAG = "checkin_service";
    public static final int SERVICE_ID = 3;

    public CheckinService() {
        super(LOG_TAG);
        Log.i(LOG_TAG, "Service says: Checkin service started no constructor");
    }

    public CheckinService(String name) {
            super(LOG_TAG);
        Log.i(LOG_TAG, "Service says: Checkin service started with constructor");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
         Log.i(LOG_TAG, "Auto Checkin started");
         .....tons of genius logic.....
        }
}
因此,当手机处于有趣的状态时,“接收到的推送”会被记录,而“发送到服务”会被记录,但服务的构造函数和OnHandleContent方法永远不会被调用。
我也有这种情况不仅发生在推送上,也发生在不精确重复的拉姆和其他人的接受者上,但这两种情况已经得到了肯定

同样,这种情况非常、非常、罕见,似乎发生在手机闲置一段时间之后;可能会进入省电模式


另外,终止应用程序的进程也会清除这个问题。

我意识到这里发生了什么

IntentService是单线程的。因此,如果我的“…大量genius logic…”中有什么东西被阻塞(比如没有超时的http请求),那么进入服务的下一个意图将不会被处理


很好,很谦卑。

我意识到这里发生了什么

IntentService是单线程的。因此,如果我的“…大量genius logic…”中有什么东西被阻塞(比如没有超时的http请求),那么进入服务的下一个意图将不会被处理

善良和谦卑