2011-08-20 5 views
1

저는 지금 당분간이 문제를 파악하려고 노력해 왔으며 이것이 왜 발생하는지 파악할 수 없습니다. 이것은 단순한 것처럼 보이지만 이것을 해결할 수는 없습니다.Android 시작 서비스 onStart 및 다른 문제

여기에 내가

내가 응용 프로그램을 시작,
1. 배경 서비스 (긴 싱글 서비스를 실행하는) 경우가 실행되지 않는 일이 같은 활동을 시작하기 전에 그것을 시작했으면거야.
2. 무슨 일이야은 "홈페이지"활동 여기
8/20 업데이트

를 시작
1.
내가 응용 프로그램을 시작하고 서비스가 실행되고 있지
2. 의도 (context.startService 경유)
    - the context.start 서비스 활동이 완료 될 때까지 실행
3.라고
4. onStartCommand는

를 실행하는 방법은 활동이 실행을 시작하기 전에 실행하는 onStartCommand 얻을 수 있습니까 ??


이것에 대한 조언은 많은 좌절감을 덜어줍니다. 질문을하기 전에 포럼을 검색했지만 내 문제와 일치하는 항목을 찾을 수 없습니다.
감사합니다. 빠른 응답


업데이트
감사합니다.
나는 응용 프로그램의 확장 (onCreate 메서드에서 서비스 시작)에서 이미 이것을 실행하고 있다고 언급 했어야합니다.
내 현재 구현 (아래)에서 앱을 단계별로 실행하면 다음과 같이 진행됩니다. 이 서비스가 활동 전에 실행되지만 활동이 실행되고 서비스가 실행될 것으로 생각했습니다. 이것은 나의 혼란의 핵심이다.
1에서 onCreate를 호출하는 응용 프로그램
startService 방법이 실행 3. 시작 활동에서 onCreate가
라고
4. 서비스 실행 - 서비스 ONSTART가 호출되지 않습니다를 (내가 노력 할게요 onStartCommand 나는 오래된 플랫폼을 대상으로하고 있지 않다 대신으로 - 덕분에 그 제안 알렉산더)

public class MyApp extends Application { 

@Override 
public final void onCreate() 
{ 

     if(!MyService.isRunning()) // this is a static method with thread lock 
     { 
      Intent i = new Intent(context, MyService.class); 
      i.setAction(MyConstants.INTENT_START_SERVICE); 
      context.startService(i); 
     } 
    } 
} 

답변

0

onstart 명령을 실행하는 올바른 방향으로 나를 지적한 그의 의견에 Alexander O에게 감사드립니다. 그래도 여전히 활동 전에 onStartCommand를 실행할 수 없습니다. 어떤 제안?

내 문제는 내 서비스에서 onStartCommand 및 onStart 기능을 모두 가지고 있다는 것이 었습니다.
분명히 onStartCommand의 기능을 이해하지 못했고 서비스 유형 (STICKY, NOT_STICKY)을 정의하기로되어 있다고 생각했습니다.
일단 onStart를 제거하고 onStartCommand로 onStart 코드를 옮기면 응용 프로그램이 작동하기 시작했습니다.
궁금한 분들은 여기에 기본적으로 있습니다.

public class MyService extends Service 
{ 
... 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) 
    { 
      // this was being executed but didn't really do anything 
      return Service.START_STICKY; 
    } 
    ... 
    @Override 
    public void onStart(Intent intent, int startId) 
    { 
     // logic that was never executed 
     // problem fixed when I removed onStart and moved the code to onStartCommand 
    } 
} 
+0

onStartCommand가 Activity 이전에 순차적으로 실행되도록하는 방법이없는 것처럼 보입니다. 누구든지이 작업을 수행 할 수있는 방법을 찾으면 알려 주시기 바랍니다. – Summit

2

당신은 Application 클래스를 확장하는 새로운 클래스를 만들 수 있습니다에 대한. 이 클래스는 기본 활동이 호출되기 전에 실행되며 앱이 처음 시작될 때만 실행됩니다. 이것은 홈페이지 활동이 시작되기 전에 서비스를 시작할 수있는 곳입니다.

+2

+1. 또한 onStartCommand를 사용하는 것이 좋습니다. 이전 플랫폼을 타겟팅하지 않는 한 onStart가 지원되지 않습니다. – EvilDuck

+0

onStartCommand가 호출되고 있지만 응용 프로그램이 실행되기 전에 onStartCommand를 실행할 수 없습니다. 이 방법을 사용할 수 있습니까? 활동 전에 실행하기위한 의도를 설정할 수 있습니까? – Summit