问题描述
我有一个从后台读取数据库的服务。数据库读取过程工作正常。但是我对服务本身有疑问。
-
如果我使用RETURN START_STICKY将“数据库读取代码”放入onStartCommand()内,则只要我不清除应用程序,当我调用startService(myServiceIntentRightHere)时,一切都会正常运行。但是当我清除手机上的应用程序时。重新创建了服务,这意味着onCreateMethod()已成功调用,但是即使使用START_STICKY也不会调用onStartCommand()。因此,我的“数据库读取代码”没有运行。
-
因此,我决定改为将“数据库读取代码”放入onCreate()方法中。现在一切正常。但是存在一个问题,即使使用stopService(myServiceIntentRightHere),我也无法停止服务。
@Override
public void onCreate() {
userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Notifications").child(userId);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
for(DataSnapshot event : dataSnapshot.getChildren()) {
message = event.child("message").getValue().toString();
title = event.child("title").getValue().toString();
createNotification();
}
reference.removeValue();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
return START_STICKY;
}
createNotification()用于在我的手机上显示通知。它工作正常。这里的问题是,即使使用stopService(),我也无法停止服务。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)