Java Android活动生命周期:Onstop()的问题

Java Android活动生命周期:Onstop()的问题,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,因此,基本上我想做的就是在最小化或停止应用程序时更改数据库中的一些值 我的代码是这样的: @Override protected void onStop() { super.onStop(); FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null) { mUserRef.child("online").setVal

因此,基本上我想做的就是在最小化或停止应用程序时更改数据库中的一些值

我的代码是这样的:

  @Override
    protected void onStop() {
        super.onStop();

        FirebaseUser currentUser = mAuth.getCurrentUser();

        if(currentUser != null) {

            mUserRef.child("online").setValue(ServerValue.TIMESTAMP);

        }

    }
但问题是,当我调用startActivity(startInten)即转移到第二个意图时,这个方法也会在那个时候被调用。我在网上做了很多研究。有人能告诉我哪种活动生命周期方法是只有当应用程序被最小化和终止时才调用的方法,而不是当我们打算在同一应用程序中执行其他活动时才调用的方法吗


谢谢。

您应该使用android生命周期库中的ProcessLifecycleOwner,并从应用程序类onCreate方法中观察它

示例代码(以kotlin为单位):

示例代码(Java):


当最后一个活动调用onStop并且应用程序已移动到后台或被终止时,将调用此功能。

处理此问题的另一可靠方法是为此使用一个服务,该服务在应用程序关闭时执行您的任务。可以这样使用:

<manifest
    <application  
        </activity>

        <service android:name=".CloseService"/>

    </application>
</manifest>
服务类别:

public class CloseService extends Service {

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) { 
        //use the relevant code here that should be executed when the app is closed
        stopSelf();
    }
}
还需要在
manifest.xml
中注册服务,如下所示:

<manifest
    <application  
        </activity>

        <service android:name=".CloseService"/>

    </application>
</manifest>

只有当应用程序被终止时才有效,但当应用程序在后台运行时无效最可靠的方法是使用单个活动application@EpicPandaForce你能详细说明或分享一些值得更多了解的东西吗?不需要,一旦您参加了“意大利面条”活动,ProcessLifecycleOwner就是一个不错的解决办法。@Rehan您可以在proandroiddev的帖子中找到关于ProcessLifecycleOwner的更详细的解释:@Rehan用Java的示例代码编辑了我的答案。你也可以看看这篇文章:P.S你应该学习Kotlin,因为它现在是Android开发的官方语言。@Rehan你添加了Android.arch.lifecycle:extensions:1.1吗“为了你的身材,格雷德尔?并确保已将其添加到应用程序模块而不是项目中。是。如果我把它放在某个方法中,它就是在编译。你应该把示例代码放在你的onCreate方法中。我不建议在有谷歌制作的Android生命周期库的情况下使用这种方法。
<manifest
    <application  
        </activity>

        <service android:name=".CloseService"/>

    </application>
</manifest>