需求是统计app使用时长,要求在按home键的时候也算一次完成的使用记录。刚开始打算采用监听home键点击,寻求的方法是监听系统广播。
class InnerRecevier extends BroadcastReceiver {
final String SYSTEM_DIALOG_REASON_KEY = "reason";
final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
@Override
public void onReceive(Context context, Intent intent){
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null) {
if (mListener != null){
if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){
// 短按home键
mListener.onHomePressed();
}else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)){
// 长按home键
mListener.onHomeLongPressed();
}
}
}
}
}
可以实现监听home键被点击,但有一个弊端就是点击home键app切换到后台后,在使用别的app点击home键 自己的app还是会收到这个广播,因为这是系统级的广播,这里处理逻辑就比较麻烦,要写一些判断等,还有另外一种可以直接监听app切换前后台,采用下面这种方式能简单完美解决我的需求。文章来源:https://www.toymoban.com/news/detail-509294.html
private int activityAount = 0;//当前Acitity个数
private boolean inItOnlineTime= true;//是否重新计时app在线时间
/**
* Activity 生命周期监听,用于监控app前后台状态切换
*/
ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
activityAount++;
if(inItOnlineTime){
//app切换到前台了,重新计时
createAppOnlineTime();
inItOnlineTime = false;
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
activityAount--;
if (activityAount == 0) {
//app切换到后台了,提交时间数据
postAppOnlineTime();
inItOnlineTime = true;
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
};
//注册这个监听
registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
把上面代码写在Application中,在Application的onCreate的方法中注册监听,在使用app的时候无论在任何页面当点击home键的时候都会触发监听,点击返回键退出app 和menu键也会触发app切换到后台的监听。文章来源地址https://www.toymoban.com/news/detail-509294.html
到了这里,关于android 监听app前后台切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!