我有一个应用程序,我想将会话设置为应用程序意味着当我登录到应用程序并且没有使用30分钟像应用程序在后台运行或屏幕关闭然后我想直接显示登录屏幕。有任何解决方案。 ?
答案 0 :(得分:0)
应用程序在后台运行
首先需要从应用程序启动一个线程来检查当前正在运行的应用程序,找出最顶层的应用程序使用以下代码来执行此操作
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
String currentRunningActivityPackageName = taskInfo.get(0).topActivity.getPackageName();
这将返回当前运行的应用程序包,将其与您的应用程序包名称进行比较。如果应用程序不匹配启动计时器,如果计时器超过30分钟,您可以退出应用程序,如果同时您的应用程序进入前台停止计时器。
屏幕关闭
对于屏幕,您可以注册广播
BroadcastReceiver mybroadcast = new BroadcastReceiver() {
//When Event is published, onReceive method is called
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("[BroadcastReceiver]", "MyReceiver");
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Log.i("[BroadcastReceiver]", "Screen ON");
}
else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
Log.i("[BroadcastReceiver]", "Screen OFF");
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_ON));
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));
}
因此,根据收到的意图,您可以切换相同的计时器。
答案 1 :(得分:0)
要管理会话,您必须将数据存储在SharedPrefrence之类的位置。之后,您可以在第一个活动中使用下面给出的Handler。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Clear the Shared prefrence here
//here you can start your Login Activity
}
}, 1000);// Change the time according to need