gpt4 book ai didi

android - 如何检测应用程序是否关闭

转载 作者:搜寻专家 更新时间:2023-11-01 08:39:50 26 4
gpt4 key购买 nike

当我的应用程序运行时,我有一个应用程序从 Broadcastreceiver 接收以从网络 (json) 获取新数据;一切运行良好,当应用程序关闭时它崩溃“你的应用程序停止工作”。即使是以下检查我的应用程序是否在前台的好方法也不起作用。我想要它,所以如果应用程序已关闭,未运行,调用 Intent 打开应用程序以使其不会崩溃,那么如何检查应用程序是否已关闭?

我的代码;

public class UpdateReceiver extends BroadcastReceiver {

private static long alarmTime = 0;

@Override
public void onReceive(Context context, Intent intent) {



if (isAppForground(context)){
Toast.makeText(context, "APP IN FOREGROUND", Toast.LENGTH_LONG).show();
} else {
Intent intentActivity = new Intent(context, MainActivity.class);
intentActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentActivity);
Toast.makeText(context, "APP NOT RUNNING", Toast.LENGTH_LONG).show();
}

//set new alarm for next tuesday
UpcomingFragment.getInstance().setAlarm(-1);
//updates the current json
UpcomingFragment.getInstance().update();


}

public static long getAlermTimeInMillis(){
return alarmTime;
}

public boolean isAppForground(Context mContext) {

ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(mContext.getPackageName())) {
return false;
}
}

return true;
}

最佳答案

我遇到了完全相同的问题,而且我在这个问题上停留了。幸运的是,在第 3 天,我找到了一个可行的解决方案。

public void onTrimMemory(final int level) {
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
//SCREEN IS NOT SHOWING
}

这个onTrimMemory 方法非常有用。它应该用于在内存中优化您的应用程序,但我们也可以像这样利用它来发挥我们的优势!

关于android - 如何检测应用程序是否关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com