1

我正在尝试在我的应用程序被销毁时修改我的 firebase 数据库,这意味着当我从最近运行的应用程序列表中删除该应用程序或单击主页按钮时,但我不知道该怎么做,我试图在每个活动的 onDestroy() 方法中执行此操作,但它不起作用。

这是我的 onDestroy() 方法:

@Override
protected void onDestroy() {
    super.onDestroy();
    FirebaseDatabase.getInstance().getReference().child("users").child(encodeEmail(mAuth.getCurrentUser().getEmail())).child("status")
            .setValue("destroyed") ;

    /*Toast.makeText(ContactsActivity.this,"closing app",Toast.LENGTH_LONG).show();
    MyApp app = (MyApp)getApplication() ;
    app.setUpBeforeClosing();*/

}
4

2 回答 2

0

你有 BaseActivity 吗?我认为您只是忘记在正确的活动中添加此行。我建议您创建 BaseAvtivity.java 类并从中扩展所有活动,BaseActivity 将扩展 AppCompatActivity 然后覆盖 BaseActivity 中的生命周期方法并在 onDestroy 方法中设置新值。

于 2018-04-20T20:27:34.247 回答
0

关于销毁文档

不要指望这个方法被称为保存数据的地方!例如,如果一个活动正在内容提供者中编辑数据,那么这些编辑应该在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在这里。此方法通常用于释放资源,例如与活动相关联的线程,以便被破坏的活动不会在其应用程序的其余部分仍在运行时留下这些东西。在某些情况下,系统会简单地终止 Activity 的宿主进程,而不会在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。

使用OnPause或使用服务写入数据。

  1. 在清单中添加这个

    <service
    android:name="com.myapp.MyService"
    android:stopWithTask="false" />
    
  2. 现在在您的MyService服务中,覆盖方法onTaskRemoved。(仅当stopWithTask设置为时才会触发false)。

    public void onTaskRemoved(Intent rootIntent) {
    
    //save data to firebase
    
    //stop service
    stopSelf();  
    }
    

参考

于 2018-04-20T22:51:52.047 回答