【发布时间】:2017-06-25 23:18:08
【问题描述】:
我是新来的,目前我正在做的应用程序正在后台运行并检查手机中的进程,如果"com.igg.castleclash" 在进程列表中,它会将 Castleclash 值设置为 true 并在 Firebase 中保存数据。一切正常,但我无法使用 addValueEventListener 从 Firebase 读取数据。
public class SensorService extends Service {
boolean castleclash = false;
DatabaseReference databaaseUsers;
public SensorService(Context applicationContext) {
super();
}
public SensorService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
startTimer();
databaaseUsers.child("user1").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
UsersData user = dataSnapshot.getValue(UsersData.class);
Log.i("user name", user.getName());
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w("Failed to read value.", error.toException());
}
});
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Intent broadcastIntent = new
Intent("uk.ac.shef.oak.ActivityRecognition.RestartSensor");
sendBroadcast(broadcastIntent);
}
public void startTimer() {
synchronized (this) {
while (true) {
try {
wait(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
databaaseUsers = FirebaseDatabase.getInstance().getReference();
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> runningProcesses = manager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo process : runningProcesses) {
if (process.processName.equals("com.igg.castleclash")) {
castleclash = true;
break;
} else {
castleclash = false;
}
}
UsersData user1 = new UsersData(castleclash, "name");
databaaseUsers.child("user1").setValue(user1);
}
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
任何想法为什么这不起作用?
【问题讨论】:
标签: android firebase firebase-realtime-database