android - 在android中创建后台服务

标签 android android-service

我创建了一个简单的服务,它的工作是处理来电。我创建了如下服务

public class CalldetectorService extends Service {

private CallHelper callHelper;

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    int res = super.onStartCommand(intent, flags, startId);
    callHelper = new CallHelper(this);
    return res;
}

@Override
public void onDestroy() {
    super.onDestroy();

    //callHelper.stop();
}

在助手内部,我正在处理调用。此服务未连续在后台运行。一段时间后,它停止了。当我打开应用程序并移至后台一段时间时,它工作得很好,稍后它就无法工作了。

如何使我的服务始终在后台运行并接听来电

最佳答案

如果您不希望服务被操作系统终止:启动的服务可以使用 startForeground(int, Notification)将服务置于前台状态的 API,系统认为它是用户主动意识到的东西,因此不会在内存不足时被杀死。 (理论上服务在当前前台应用程序的极端内存压力下仍然有可能被杀死,但实际上这不应该是一个问题。)

在您的情况下,“捕获”来电最好使用广播接收器实现,该接收器在 list 中注册用于 Intent :<action android:name="android.intent.action.PHONE_STATE" />

关于android - 在android中创建后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409514/

相关文章:

android - 如何在Android中调试两个进程?

android - 如何在 Spotify 和 Google Music 等后台播放音乐时关闭通知

安卓服务 : Restarting once killed or removed from task stack from phone(Clear All) tasks

Android adb推送到没有SD卡且没有root访问权限的设备中的位置

Android:IntentService 未正确排队

java - 如何检查 BackStack 是否为空

java - 主服务线程上的 BlockingQueue

android - 在随机点画圆

java - 其他布局中的项目不响应用户事件

android - 如何在另一个 Activity 中停止/取消警报管理器?