我的问题很简单,我尝试在用户关闭应用时为我的应用禁用蓝牙。 我需要,如果用户在后台使用应用程序,蓝牙保持活动状态,但如果用户将应用程序滑出屏幕,蓝牙将关闭。
我知道如何禁用蓝牙。
if (mBluetoothAdapter.isEnabled()){
mBluetoothAdapter.disable();
}
效果很好,但是当用户关闭应用时我需要拨打3行,我尝试使用onDestroy
,onPause
,onStop
,但没有人适合我。
onDestroy
方法。
当用户触摸最近按钮时调用onPause
方法,但应用程序未关闭。
onStop
的{{1}}方法相同。
那么......如何知道用户关闭应用的时间?
谢谢
答案 0 :(得分:0)
您可以编写一种方法来检查应用是否在后台运行。
private boolean isAppIsInBackground(Context context) {
isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
isInBackground = false;
}
}
}
}
} else {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
}
return isInBackground;
}
如果应用程序在后台运行,则此方法返回true。然后您可以相应地启用或禁用蓝牙。 您还可以在BaseActivity的onResume和onPause方法中设置一个标志,该标志由所有其他活动扩展,以便您可以检查标志以了解应用程序是否正在运行。
答案 1 :(得分:0)
创建 BaseActivity 并覆盖其OnPause()方法并进行扩展 来自BaseActivity的每个活动。
我还想提一下,即使在多个活动之间切换,onPause()也会被触发,因此您需要跟踪它何时暂停以转到另一个屏幕。
参考:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
答案 2 :(得分:0)
如果您希望在用户退出活动时禁用蓝牙,请在onBackPressed()
中将其停用。