2013-06-05 1 views
1

내 앱은 푸시 알림에 urban Airship을 사용합니다.도시용 비행선에서 푸시를 받기 위해 앱을 실행 상태로 유지

사용자가 "force" closes (멀티 태스킹 창이나 설정에서 멀리 밀어서 이동)하면 문제가 시작됩니다. 푸시가 도착하면 도시 비행선의 수신기에 도착하고 내 앱이 사용할 의도를 방송합니다. 따라서 앱을 강제 종료하면 수신자가 활성화되지 않고 브로드 캐스트를 수신 할 수 없습니다.

나는 약 Intent.FLAG_INCLUDE_STOPPED_PACKAGES에 대해 알고 있지만 도시는 방송과 jar 파일에 있기 때문에 사용할 수 없습니다.

사용자가 앱을 닫더라도 내 앱을 항상 실행 상태로 유지할 수있는 문제가있을 수 있습니다. 어떻게하면됩니까? 나는 앱이 무엇을하고 있는지를 본다. 다른 해결책이 있습니까?

P. 나는 안드로이드가 사용자 힘으로 앱을 닫을 때 수신자를 비활성화시키고 싶어하지만 밀어 넣기 알림과 동일하지는 않지만 밀어 넣기 알림은 계속 통과한다는 것을 알았다. 나는 앱을 "살기"를 원한다. 그래서 나는 푸시를받을 수있다. 감사합니다.

답변

1

서비스는 응용 프로그램이 닫힐 때, service.stopSelf는() 당신은 START_STICKY 플래그를 반환하는 서비스를 할 것입니다

+0

당신이 말해 주시겠습니까 매니페스트 추가 권한에

? – roiberg

+0

전화가 다시 부팅되면 서비스를 다시 시작하는 방법이 있습니다. 브로드 캐스트 수신기를 만들고 이라는 작업을 수신해야합니다. <동작 로이드 이름 = "android.intent.action.BOOT_COMPLETED"/> 이 참조 : http://stackoverflow.com/questions/2784441/trying-to-start- a-service-on-boot-on-android –

+0

잘 작동합니다. 감사! – roiberg

0

서비스 내에서 호출 한 경우에만 중지되는 서비스를 통해 방송을 수신하려고 살

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    handleCommand(intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

는 그리고 걸쳐 지속하면 생성하고이 onReceive 년대에 서비스를 시작 브로드 캐스트 리시버를 확장하는 수신기를 등록해야 재부팅합니다.

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

등록 수신기 : 전화가 재부팅 될 때 서비스가 살아 유지하는 경우

<receiver 
    android:name=".MyBootReceiver" 
    android:enabled="true" 
    android:exported="false" 
    android:label="MyBootReceiver" > 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <!-- Catch HTC FastBoot --> 
    <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" /> 
</intent-filter> 
</receiver> 
관련 문제