2016-07-26 1 views
3

Android 코드에 문제가 있습니다. Firebase Realtime Database을 사용하여 즉시 데이터를 즉시 업데이트 할 수있는 기반의 클라우드 기반을 사용하려고했지만 문제는 화면이 켜져있을 때만 원하는 코드를 실행한다는 것입니다. 무엇이 필요합니까?은 화면이 꺼져있는 동안 데이터가 변경 될 때마다 코드 줄을 실행하고 싶습니다. 그럴 수 있습니까? 덕분에 모두화면이 잠자기 상태 인 동안 명령 실행

@Override 
    protected void onStart(){ 
     super.onStart(); 
     mref = new Firebase("https://connection-4f6d8.firebaseio.com/condition"+a_id); 
     mref.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       String text = dataSnapshot.getValue(String.class); 
       if(text.equals("UNLOCKED")){ 
        sendDataonWIfi("0"); 
       } 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 
    } 

@Override 
    protected void onStop() { 
     super.onStop(); 
     mref = new Firebase("https://connection-4f6d8.firebaseio.com/condition"+a_id); 
     mref.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       String text = dataSnapshot.getValue(String.class); 
       if(text.equals("UNLOCKED")){ 
        sendDataonWIfi("0"); 
       } 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 
    } 
+0

이러한 데이터가 ListView에있는 경우 RecyclerView – Carlo

+0

에서 변경하려고하면 안됩니다. 해당 텍스트 뷰 –

+0

에 onCreate 이벤트 리스너를 추가해야합니다. onStart와 onStop에 매번 추가 할 필요는 없습니다. –

답변

2

장치가 슬립 모드로 전환 될 때 I가 실행되지 않는 코드의 당신의 조각을 같은데요. 이 문제를 해결하려면 Wakelocks를 사용해야합니다. 웨이크 잠금 장치를 획득하면 장치가 해제 될 때까지 장치가 절전 모드로 돌아 가지 않습니다.

깨우기 잠금 장치를 사용하고 서비스를 시작하는 깨우기 브릿지 수신기를 사용할 수 있습니다. 작업이 끝나면 절전 모드 해제를 해제하십시오. 당신이 장치가 다시 절전 모드 (저전력 소비 모드)로 가자하지 않을 경우 더 빨리 배터리 을 소모하기 때문에

는 wakelocks 사용에주의하십시오. 당신은 아래 링크에서 구현 세부 정보를 찾을 수 있습니다 코드를 실행하기를 OnStop()를 사용

https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

+0

안녕하세요, 벌써 시도했지만 코드가 onStop 메서드에서 실행 중이므로 onSleep 메서드가 있습니까? –

+0

코드를 공유 할 수 있다면 필요한 변경 사항을 알려줄 수 있습니다. –

+0

지금 업데이트했습니다. –

0

당신은 화면이 작동한다에있는 동안 실행하고 싶습니다. 활동주기를 더 잘 이해할 수 있습니다. https://developer.android.com/reference/android/app/Activity.html

+0

그래서 ... 만약 내가 onStop 메서드에서 코드를 넣어? 화면이 꺼져 있어도 코드가 실행됩니까? –

+0

그렇습니다. 개발자가 안드로이드 사이트에 관한 조언을 전했지만, 전화가 잠든 동안 집중적 인 일을하는 것에 대한 조언은 새로운 활동을 시작하는 것을 방해 할 수 있습니다. https://developer.android.com/training/basics/activity-lifecycle/pausing.html –

관련 문제