我做了很多搜索,但没有找到任何合适的答案。问题是这样的:
假设我启动了具有活动A,B,C的android项目,并且我需要在主页按钮按下后整个应用程序进入后台时捕获事件(无论活动如何)。
当用户再次启动app时,它会从android维护的Activity堆栈中恢复。此活动我想捕捉并向用户显示“您的应用现在处于活动状态”。
当将一个屏幕切换到另一个屏幕时,这个toast show不可见,只有当用户再次回到应用程序时,它才应该是第一次可见。
答案 0 :(得分:1)
经过几天的努力,我找到了一些东西。希望它在某些情况下有用。
/**
* Checks if the application is being sent in the background (i.e behind
* another application's Activity).
*
* @param context the context
* @return <code>true</code> if another application will be above this one.
*/
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
为此,您应将其包含在AndroidManifest.xml中
<uses-permission android:name="android.permission.GET_TASKS" />
了解更多细节。参考:android:how to check if application is running in background
答案 1 :(得分:0)
当按下主页按钮时,您的活动会调用 onStop 方法。因此,您可以在共享偏好中设置一个boolean
并覆盖启动时检查如果布尔值为真,则手动并在Toast中放置Toast。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//set flag true in shared preferences
}
});
答案 2 :(得分:-1)
当app再次处于活动状态时,将调用此方法。在那里写你的吐司。
@Override
public void onResume() {
super.onResume();
}