我有一个VoIP应用程序,该应用程序收到了GCM高优先级通知,因此我可以在电话空闲时接听电话。
public class GCMReceiver extends GCMIntentService {
public void onMessage(Context context, Intent intent) {
...
startService(new Intent(getBaseContext(), ServiceManager.class));
...
}
}
收到通知后,我将创建一个新的后台服务。
public class ServiceManager extends Service {
public static Intent serviceIntent;
...
public int onStartCommand(Intent intent, int flags, int startId) {
...
return START_STICKY;
}
...
public void startSipService() {
...
serviceIntent = new Intent(getBaseContext(), SIPProvider.class);
this.startService(serviceIntent);
}
}
此服务启动另一个后台服务,该后台服务处理SIP通信,音频等。
public class SIPProvider extends Service {
public static Intent serviceIntent;
...
public int onStartCommand(Intent intent, int flags, int startId) {
...
return START_NOT_STICKY;
}
}
问题是由于某种原因,此SIPProvider服务停止处理。这是相关的logcat:
2019-04-15 14:37:20.392 30439-30439/***.***.*** D/ServiceManager: >> onCreate
2019-04-15 14:37:20.393 30439-30439/***.***.*** I/ServiceManager: >> onStartCommand
2019-04-15 14:37:21.658 30439-30439/***.***.*** I/SIPProvider: >> onStartCommand
2019-04-15 14:37:21.658 30439-30439/***.***.*** D/SIPProvider: OnStart
2019-04-15 14:37:21.834 30439-30439/***.***.*** D/SIPProvider: Listen for phone state
2019-04-15 14:37:21.858 30439-30439/***.***.*** D/SIPProvider: Direct sip start
2019-04-15 14:37:21.863 30439-30439/***.***.*** W/SIPProvider: Creating new handler thread
在14:37:48,我发送了另一次推送,似乎服务SIPProvider醒了。
2019-04-15 14:37:48.110 30439-30465/***.***.*** D/SIPProvider: Start was asked and we should actually start now
2019-04-15 14:37:48.124 30439-30465/***.***.*** D/SIPProvider: Ask pjservice to start itself
2019-04-15 14:37:48.130 30439-30465/***.***.*** D/PjService: Starting sip stack
2019-04-15 14:37:48.168 30439-30439/***.***.*** D/GCMBroadcastReceiver: onReceive()
对此有什么解释吗?
如果手机完全不活动约3小时,则会发生这种情况。我正在Samsung S9上进行测试,但有报告称用户使用不同的设备运行Android> = 8。
下一次推送效果很好。
任何帮助将不胜感激。
谢谢