当用户用户从当前正在运行的应用列表中删除应用时,我想清除用户凭据并将用户注销。在这里,我正在做的是,当用户通过刷掉应用列表来结束应用时,内部的应用应该执行注销。但是当用户通过滑动删除应用程序时,它什么都不做。以下是我的代码。
public class MyService extends Service{
public void onTaskRemoved(){
Log.i("RootActivity:onTaskRemoved()","******TaskRemoved******");
SharedPreferences pref = getSharedPreferences(getString(R.string.pref_current_user), MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear(); // CLEAR ALL FILEDS
editor.commit(); // COMMIT CHANGES
Log.i("RootActivity:onTaskRemoved()","******APP LOGGEDOUT******");
setloginButton(); // Change logout button to login
Log.i("RootActivity:onTaskRemoved()","******loginButton is set******");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
这是你只用bindService()
绑定服务,所以onTaskRemoved()
永远不会被调用。
使用服务你可以 -
这个documentation通常分别讨论这两种类型的服务,您的服务可以双向工作,这就是您需要做的 -
它可以启动(to run indefinitely
),也允许绑定。
这只是一个问题,你是否实现了几个回调方法:onStartCommand()
允许组件启动它和onBind()
允许绑定。
做两件事 -
startService(new Intent(context, MyService.class));
// Bind to the service
bindService(new Intent(context, MyService.class),
mConnection, Context.BIND_AUTO_CREATE);
protected void onDestroy() {
SharedPreferences pref=getSharedPreferences(getString(R.string.pref_current_user),MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.clear(); // CLEAR ALL FILEDS
editor.commit(); // COMMIT CHANGES
Log.i("RootActivity:onTaskRemoved()","******APP LOGGEDOUT******");
setloginButton(); // Change logout button to login
Log.i("RootActivity:onTaskRemoved()","******loginButton is set******");
super.onDestroy();
}
在你的活动中添加这个....
与Firebase结合使用时,就像使用Firebase一样简单
@Override
protected void onDestroy() {
super.onDestroy();
FirebaseAuth.getInstance().signOut();
}