2012-04-28 6 views
2

나는 phonegap/cordova를 사용하는 안드로이드 응용 프로그램을 만들고 있습니다. 이 앱은 자바 스크립트를 사용하여 서버의 콘텐츠를 수시로 가져오고 새 콘텐츠가있는 경우 시스템 트레이 알림을 보냅니다. 내가 직면 한 문제는 안드로이드가 메모리 나 그 밖의 것이 부족할 때 앱이 결국 종료된다는 것입니다.안드로이드 서비스를 사용하여 전화 걸기를 유지하는 방법

그래서 내 매니페스트에 서비스를 추가했습니다. (모든 사람들이 서비스가 문제를 해결할 것이라고 말합니다.)

<service android:name="UpdateService" /> 

매우 좋지만이 서비스를 사용하면 아무 것도 (분명히)하지 않습니다. 그렇다면 내 서비스가 계속 실행되도록 기본 애플리케이션을 트리거하게하려면 어떻게해야합니까?

ADDITION : 나는 또한 내 주요 응용 프로그램

+0

브라우저에서 javascript를 사용하면 백그라운드 검사를 수행하는 것이 잘못된 방법 일 수 있습니다. 자바에서 안드로이드 서비스를 점검하고 (http 요청 또는 기타를 사용하여) 백그라운드를 점검하고 거기에서 경고를 발행하십시오. 대화 형 UI가 필요한 경우에만 브라우저 기반 자바 스크립트를 엽니 다. 즉, Android Actitivy 모델에 맞는 것입니다. –

+0

그게 좋겠지 만 애플 리케이션은 멀티 플랫폼이어야합니다. 따라서 나는 phonegap과 jquery mobile (ajax)을 사용하여 컨텐츠를 가져 왔습니다. 모든 브라우저에서 작동합니다. Phonegap은 자바 스크립트가 백그라운드에서 실행되도록 허용하지만 프로세스는 단순히 종료됩니다. – Neograph734

+0

UI는 다중 플랫폼이 될 수 있지만 플랫폼 별 확장으로 사용자 인터페이스를 조작해야합니다. 범용 API를 제공하는 일부 자바 스크립트 코드를 사용하여 확장에 링키지를 래핑하면 코드의 나머지 부분이 모든 플랫폼에서 동일 할 수 있습니다. 적어도 나에게 안드로이드 시스템과 실제로 호환되는 방식으로 백그라운드에서 javascript 코드를 실행하기 위해 안드로이드 서비스에 node.js와 같은 무언가를 넣는 것보다 훨씬 바람직합니다 (즉, 항상 죽지 않을 것입니다) –

답변

1

확인 응용 프로그램이 매 n 밀리 초를 실행을 확인 할 알람 관리기와 PendingIntent를 등록 시도에 서비스를 시작하기 위해 관리 . 실행 중이 아니면 응용 프로그램을 다시 시작하십시오.

Intent serviceIntent = new Intent("com.myapp.LaunchActivity"); 
startService(serviceIntent); 

은 패키지 이름과 LaunchActivity으로 com.myapp.LaunchActivity 교체 :

응용 프로그램을 시작하려면이 같은 일부 코드를 사용합니다.

+0

나는 AlarmManager를 살펴보고 실행중인 응용 프로그램을 점검 할 것입니다. :) – Neograph734

+0

나는 사용자가 다른 앱 (특히 게임이나 비디오 시청)을 사용하는 동안에도 작동한다고 가정하면 사용자에게 다소 성가신 일이 될 것이라고 기대합니다. –

+0

웹킷 엔진의 부작용으로 이 서비스와 동일한 프로세스. 리소스가 부족한 포 그라운드 앱을 가져 오면 모든 것이 죽을 수 있습니다. 안드로이드는 그 후에도 서비스를 다시 시작할 수 있지만 activiry 코드는 아닐 수도 있습니다. –

관련 문제