0

Firebase Job Dispatcherを使用して、15分ごとに実行される定期タスクを実行し、firebaseデータベースのデータをチェックし、最新のデータに関する通知を表示します。
私が直面している問題は、リスナーがonStartJobに正しく接続されていない、つまりonDataAdded内のロギングステートメントが呼び出されないということです。
私はどうやら、リスナーが呼び出されなかった理由として理由は、私のコードは、私は通知を表示したnullポインタ例外をスローして保たれていることだった、以下FirebaseJobDispatcherのFirebaseDbにリスナーを添付する

public class FetchInfoService extends JobService { 

InfoObject note; 
NotificationCompat.Builder notificationBuilder; 
private static final String TAG = "SyncService"; 

public FetchInfoService() { 
} 

@Override 
public boolean onStartJob(com.firebase.jobdispatcher.JobParameters job) { 
    Log.e(TAG, "Executing job id: " + job.getTag()); 
    DatabaseReference dbReference = FirebaseDatabase.getInstance().getReference().child(CONTENT); 
    Log.e(TAG,dbReference.getKey()); 
    dbReference.addValueEventListener(new ValueEventListener() { 

     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Log.e(TAG,"OnDataChanged Called"); //----Never Called 


      for (DataSnapshot infoDataSnapshot : dataSnapshot.getChildren()) { 
       note = infoDataSnapshot.getValue(InfoObject.class); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Log.e(TAG,"Listener Cancelled"); 
     } 
    }); 

notificationBuilder = new NotificationCompat.Builder(getApplicationContext()) 
        .setSmallIcon(R.drawable.ic_delete_black_48dp) 
        .setContentTitle(note.getTitle()) 
        .setContentText(note.getDescription()); 
    NotificationManager mNotificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    mNotificationManager.notify(1, notificationBuilder.build()); 
    return false; 
} 

@Override 
public boolean onStopJob(com.firebase.jobdispatcher.JobParameters job) { 
    Log.e(TAG, "Finished job: " + job.getTag()); 
    return false; 
} 

} 

おかげ

答えて

0

を自分のコードをリンクしましたしたがって、リスナーを付けてデータベースの変更をリッスンしていた段階には至っていませんでした。 onChildAddedの通知を表示するコードを移動すると、私のために修正されました。

関連する問題