当用户用户从当前正在运行的应用列表中删除应用时,我想清除用户凭据并将用户注销。在这里,我正在做的是,当用户通过刷掉应用列表来结束应用时,应用内的应用应执行注销。但是当用户通过滑动删除应用程序时,它什么都不做。以下是我的代码。
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;
}
}
答案 0 :(得分:1)
您只能使用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);
答案 1 :(得分:0)
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();
}
在您的活动中添加....
答案 2 :(得分:0)
与Firebase结合使用,就像
一样简单 @Override
protected void onDestroy() {
super.onDestroy();
FirebaseAuth.getInstance().signOut();
}