我今天很开心,还有头发:)
我已经测试了,它的工作原理!
首先,将其添加到您的清单中:
其次,将其添加到您的“主/主”活动/类:
@Override
protected void onPause() {
if (this.isFinishing()){ //basically BACK was pressed from this activity
player.stop();
Toast.makeText(xYourClassNamex.this, "YOU PRESSED BACK FROM YOUR 'HOME/MAIN' ACTIVITY", Toast.LENGTH_SHORT).show();
}
Context context = getApplicationContext();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List taskInfo = am.getRunningTasks(1);
if (!taskInfo.isEmpty()) {
ComponentName topActivity = taskInfo.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
player.stop();
Toast.makeText(xYourClassNamex.this, "YOU LEFT YOUR APP", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(xYourClassNamex.this, "YOU SWITCHED ACTIVITIES WITHIN YOUR APP", Toast.LENGTH_SHORT).show();
}
}
super.onPause();
}
并且显然替换xYourClassNamex,以及你的类名称:)
现在显然你不需要“吐司”,但会告诉你发生了什么。
当您从“主页/主”活动中按BACK返回时,您显然会收到2个吐司,“您从”主页/主要“活动中回复”,第二个吐司是“您的应用程序中的切换活动”。我相信我知道为什么会发生这种情况,但它并不重要,因为我称之为“player.stop();”从2种情况来看,这意味着我的应用程序不再被“使用”了。显然比“player.stop();”如果你需要:)也很明显,你不需要“你”你的应用程序中的“你切换的活动”,因为没有理由“停止/暂停”背景音乐,这是我需要的,但如果你当新活动开始时,需要做一些事情,在这里你可以去:)
希望这有助于任何人想知道用户何时“离开/退出/完成”的应用程序:)
感谢所有的评论和帮助每个人!好极了!
编辑-
这部分必须在每个活动的onPause中:
Context context = getApplicationContext();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List taskInfo = am.getRunningTasks(1);
if (!taskInfo.isEmpty()) {
ComponentName topActivity = taskInfo.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
player.stop();
Toast.makeText(xYourClassNamex.this, "YOU LEFT YOUR APP", Toast.LENGTH_SHORT).show();
}
}
所以你会知道用户是否从任何活动中离开你的应用程序。这很好知道:)