如何侦测自己的APP被退到背景去? 蓝牙连接不应该因此而中断啊,最好保持长连接可以重写onPause()方法,看下生命周期的使用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得你可以吧这蓝牙连接放到service中去,作为后台服务一直运行,保持常连接 回rtyou1234:因为是客户要求要切断连线,所以不能保持连接。 回blovecat与jack_wolf_:小弟有试着想从生命周期下手,但切换到其他程式的时候,呼叫的都是 onPause() 和 onStop(),小弟写了4个Activity,这边就简单称作[首页]、[蓝芽]、[参数种类1]、[参数种类2],一开始进[首页]开[蓝芽]连线后,使用者会进入[参数种类1]或[参数种类2]调整装置,小弟想要写的效果是在[参数种类1]或[参数种类2]Activity中,发生了让小弟的程式会退到背景去的情况,小弟能够让蓝芽中断连线并回到首页,使用者在处理完其他事情回到小弟的APP中只会看到首页,进入[参数种类1]或[参数种类2]都只能透过[首页]进行操作,離開的時候是直接用finish()離開,如果把斷線寫到 onPause() 或 onStop() ,只要一離開[參數種類1]或[參數種類2]都會造成斷線,才想說問問看有沒有什麼好方法? 在onpause的时候加这么个判断//判断整个应用是不是在手机前台 public boolean isAppOnForeground() { ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE); String packageName = getApplicationContext().getPackageName(); List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); if (appProcesses == null) return false; for (RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(packageName) && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { return true; } } return false; } 感激版大的帮忙,不过小弟的[首页]、[参数种类1]、[参数种类2]都写在不同的package中,类似像这样:[首页]:com.xxx.p0[参数种类1]:com.xxx.p1[参数种类2]:com.xxx.p2感觉版大的方式是去检查在运行中的Process,所以程式中取得的packageName都是com.xxx.p0,比对的也是com.xxx.p0,只要从[首页]进入[参数种类1],[首页]就会进入背景,版大的程式永远都会输出false,不知是否有方式解决? 就用进程top判断就行,就像版主的样子,不过包名这快你可以自己做判断,你完全可以用contains("com.xxx")这样来判断的,不用非用本程序报名来判断 抱歉版主,小弟自己在打程式码的地方有打错才会一直传出false,上一篇回文是小弟太急,没测清楚,这边先说声抱歉。修正过后,一切正常使用,不过,版主的程式要放在onStop() 才有办法监测到程式变成了背景,在onPause() 好像侦测不到。 Android如何调试最快? 如何在scrollview的顶部固定一个控件? 求高手改写一下代码, 多个C库一个C文件的Android.mk编写 手机如何进行wlan连接联网交互 android bluetooth 问题 java新手问题 Android 指定经纬度跳转到导航,出错 请问微信UI是怎么实现的 Android软件盘弹出改变View布局 为什么读不出来 求助HttpUrlConnection.getInputStream()异常的问题
因为是客户要求要切断连线,所以不能保持连接。
小弟有试着想从生命周期下手,
但切换到其他程式的时候,
呼叫的都是 onPause() 和 onStop(),
小弟写了4个Activity,
这边就简单称作[首页]、[蓝芽]、[参数种类1]、[参数种类2],
一开始进[首页]开[蓝芽]连线后,
使用者会进入[参数种类1]或[参数种类2]调整装置,
小弟想要写的效果是在[参数种类1]或[参数种类2]Activity中,
发生了让小弟的程式会退到背景去的情况,
小弟能够让蓝芽中断连线并回到首页,
使用者在处理完其他事情回到小弟的APP中只会看到首页,
进入[参数种类1]或[参数种类2]都只能透过[首页]进行操作,
離開的時候是直接用finish()離開,
如果把斷線寫到 onPause() 或 onStop() ,
只要一離開[參數種類1]或[參數種類2]都會造成斷線,
才想說問問看有沒有什麼好方法?
public boolean isAppOnForeground() {
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
String packageName = getApplicationContext().getPackageName(); List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null)
return false; for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(packageName) && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
}
不过小弟的[首页]、[参数种类1]、[参数种类2]
都写在不同的package中,
类似像这样:
[首页]:com.xxx.p0
[参数种类1]:com.xxx.p1
[参数种类2]:com.xxx.p2
感觉版大的方式是去检查在运行中的Process,
所以程式中取得的packageName都是com.xxx.p0,
比对的也是com.xxx.p0,
只要从[首页]进入[参数种类1],
[首页]就会进入背景,
版大的程式永远都会输出false,不知是否有方式解决?
小弟自己在打程式码的地方有打错才会一直传出false,
上一篇回文是小弟太急,没测清楚,这边先说声抱歉。
修正过后,一切正常使用,
不过,版主的程式要放在onStop() 才有办法监测到程式变成了背景,在onPause() 好像侦测不到。