我有一个服务(用于检测传入和传出呼叫),用户可以在我的应用程序中启动和停止该服务;该服务也可以在设备重新启动时启动。
现在,我运行的情况是,当设备处于休眠状态时,服务没有“唤醒”;当接收到呼叫时,服务还没有唤醒以处理该传入呼叫。
我的问题是,如何使我的服务意识到这种情况,而不为它保留一个警钟?
如果唤醒是解决这个问题的唯一方法,那么最好的实现应该是什么呢?
发布于 2016-11-10 08:35:39
添加清单:
<uses-permission android:name="android.permission.WAKE_LOCK"/>现在为您服务:
PowerManager powerManager;
PowerManager.WakeLock wakeLock;
@Override
public void onCreate() {
super.onCreate();
powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NOTIFY");
}现在,
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
wakeLock.acquire();
handleSERVICE(intent);
return START_STICKY;
}
@Override
public void onDestroy() {
wakeLock.release();
}发布于 2016-11-10 08:59:59
您可以将此权限添加到您的清单中,并使BroadcastReceiver用于侦听传入呼叫并在接收方内部启动您的服务。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<!--This part is inside the application-->
<receiver android:name=".CallReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver> https://stackoverflow.com/questions/40523049
复制相似问题