Android Studio-Start_Sticky不从服务调用onStartCommand

问题描述

我有一个后台读取数据库的服务。数据库读取过程工作正常。但是我对服务本身有疑问。

  1. 如果我使用RETURN START_STICKY将“数据库读取代码”放入onStartCommand()内,则只要我不清除应用程序,当我调用startService(myServiceIntentRightHere)时,一切都会正常运行。但是当我清除手机上的应用程序时。重新创建了服务,这意味着onCreateMethod()已成功调用,但是即使使用START_STICKY也不会调用onStartCommand()。因此,我的“数据库读取代码”没有运行。

  2. 因此,我决定改为将“数据库读取代码”放入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 (将#修改为@)