我想检测我的应用程序何时发送到后台.关于挂钩HOME键有很多问题 - 我知道这只有通过注册为启动器应用程序才有可能.
......但是......总是有一个客户想要某些行为......
我们有一个具有高安全性要求的应用.无论出于何种原因,客户希望应用程序在应用程序进入后台时退出服务器(电话,HOME键,最后一次活动)(**澄清我的意思是当屏幕上的前台活动不是我的应用程序之一**).
那么,如果我无法挂钩HOME键,还有其他选择吗?显然只是挂钩onPause()无济于事,因为那是Activity特定的.
我们提出的"最佳"是在Application类中保留一组Activity引用.在每个Activity中,onResume()我们将它添加到此数组中.在onPause()我们删除它.此外,onPause()我们通过此数组枚举,以查明是否有任何已注册的活动在前台.如果未找到前台活动,则用户将被注销.
我不满意这个解决方案,并希望找到更好的方法.
//使用服务
// 在那里面
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_CALL);
filter.addAction(Intent.ACTION_ANSWER);
registerReceiver(mIntentReceiver, filter);
Run Code Online (Sandbox Code Playgroud)
}
//然后在BroadcastReceiver中
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equalsIgnoreCase("android.intent.category.HOME") )
{
//logout logic
}
else if(action.equalsIgnoreCase("android.intent.action.SCREEN_OFF") )
{
//logout logic
}
else if(action.equalsIgnoreCase("android.intent.action.DIAL") )
{
//logout logic
}
else if(action.equalsIgnoreCase("android.intent.action.CALL")){
/ /logout logic
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11193 次 |
| 最近记录: |