应用程序转到后台时Android自动注销

Ric*_*ier 14 android

我想检测我的应用程序何时发送到后台.关于挂钩HOME键有很多问题 - 我知道这只有通过注册为启动器应用程序才有可能.

......但是......总是有一个客户想要某些行为......

我们有一个具有高安全性要求的应用.无论出于何种原因,客户希望应用程序在应用程序进入后台时退出服务器(电话,HOME键,最后一次活动)(**澄清我的意思是当屏幕上的前台活动不是我的应用程序之一**).

那么,如果我无法挂钩HOME键,还有其他选择吗?显然只是挂钩onPause()无济于事,因为那是Activity特定的.

我们提出的"最佳"是在Application类中保留一组Activity引用.在每个Activity中,onResume()我们将它添加到此数组中.在onPause()我们删除它.此外,onPause()我们通过此数组枚举,以查明是否有任何已注册的活动在前台.如果未找到前台活动,则用户将被注销.

我不满意这个解决方案,并希望找到更好的方法.

Pad*_*mar 6

//使用服务

// 在那里面

@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)


Ric*_*ier 5

我们通过@peceps来解决基于解决方案的问题:当Android应用程序关闭/发送到后台时运行代码.