2014-10-16 2 views
1

Я создал простые службы, его задача - обрабатывать входящий звонок. Я создал такие услуги, как нижесоздавать фоновые службы в android

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(); 
} 

}

Внутри помощника, я м обработки вызова. Эта служба не работает в фоновом режиме непрерывно. через некоторое время его прекращение. Он работает очень хорошо, когда я открываю приложение & переместимся на фон в течение некоторого времени, позже на нем не будет работать.

Как сделать свою службу, чтобы работать в фоновом режиме и всегда поймать входящие вызовы

+0

нет вопроса здесь – tyczj

+0

я обновил вопрос жирного шрифта буквы, вы можете пожалуйста помочь – Naruto

ответ

1

Если вы не хотите, чтобы служба была убита ОС: запущенная служба может использовать API startForeground(int, Notification), чтобы поставить службу в состояние переднего плана, где система считает, что это то, что пользователь активно осознает и, следовательно, не является кандидатом на убийство при низком уровне памяти. (Теоретически возможно, чтобы служба была убита при экстремальном давлении памяти из текущего приложения переднего плана, но на практике это не должно вызывать беспокойства.)

В вашем случае «ловить» входящие звонки лучше всего достичь с помощью широковещательный приемник, зарегистрированный в манифесте за умысел: <action android:name="android.intent.action.PHONE_STATE" />

+0

Привет, спасибо. Как насчет исходящих звонков ?, мне также нужно записать номер исходящего звонка, когда пользователь набирает номер. Для этого вещательного устройства не работает. Я думаю, – Naruto

+0

Используйте широковещательный приемник, с этим в качестве фильтра намерения: '' –

+0

О, в этом случае оба моих входящих и номер исходящих вызовов может быть записан, независимо от того, что мое приложение работает в фоновом режиме или неправильно. я попробую трюк. спасибо .. плохо вернемся к вам в ближайшее время – Naruto

0

ответ есть вы не делаете, то ОС может убить службу в любое время он должен. вы можете вернуть START_STICKY, который будет отмечать, что вы возобновляете обслуживание, но когда нет возможности запустить службу навсегда

+0

Привета, Спасибо за ваш ответ, пожалуйста, вы можете сказать мне, в моем случае как обрабатывать событие входящего вызова из моего приложения. – Naruto

+0

смотрите здесь http://stackoverflow.com/questions/1853220/retrieve-incoming-calls-phone-number-in-android – tyczj

+0

Спасибо, теперь вы говорите мне, что я использую broadcastreceivers вместо сервисов правильно ?, мне нужно закодировать для обработки вызовов, т.е. входящих и исходящих. Но если я убью активность или если я положу свою деятельность в фоновом режиме на более длительный период, это не сработает. Я ищу вашу помощь на этом – Naruto

Смежные вопросы