首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持Android服务的警觉,而不是清醒。

保持Android服务的警觉,而不是清醒。
EN

Stack Overflow用户
提问于 2016-11-10 08:31:58
回答 2查看 144关注 0票数 0

我有一个服务(用于检测传入和传出呼叫),用户可以在我的应用程序中启动和停止该服务;该服务也可以在设备重新启动时启动。

现在,我运行的情况是,当设备处于休眠状态时,服务没有“唤醒”;当接收到呼叫时,服务还没有唤醒以处理该传入呼叫。

我的问题是,如何使我的服务意识到这种情况,而不为它保留一个警钟?

如果唤醒是解决这个问题的唯一方法,那么最好的实现应该是什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-10 08:35:39

添加清单:

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK"/>

现在为您服务:

代码语言:javascript
复制
PowerManager powerManager;
PowerManager.WakeLock wakeLock;

@Override
    public void onCreate() {
        super.onCreate();
        powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NOTIFY");

    }

现在,

代码语言:javascript
复制
@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        wakeLock.acquire();
        handleSERVICE(intent);
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        wakeLock.release();
    }
票数 0
EN

Stack Overflow用户

发布于 2016-11-10 08:59:59

您可以将此权限添加到您的清单中,并使BroadcastReceiver用于侦听传入呼叫并在接收方内部启动您的服务。

代码语言:javascript
复制
<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> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40523049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档