如果 App 是否为 运行,则在 BroadcastReceiver 中显示对话框
Show Dialog in BroadcastReceiver if App is running or not
如果应用程序已关闭或在后台 运行,但如果应用程序已打开或 运行 在前台我想直接显示对话框。
我有这个代码:
@Override
public void onReceive( Context context, Intent intent )
{
if ( RunningHelper.isAppRunning(context, Constants.PROJECT_NAME ) )
{
Log.d("Running", "--------APP RUNNING");
}
else
{
Log.d("Running", "--------APP NOT RUNNING");
showNotification();
}
}
我的跑步助手:
public static boolean isAppRunning(final Context context, final String packageName) {
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
if (procInfos != null)
{
for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
if (processInfo.processName.equals(packageName)) {
return true;
}
}
}
return false;
}
问题是应用程序总是检测到 运行 onReceive(),有人知道如何正确执行吗?谢谢
实施自定义应用程序class
public class ProjectApplication extends Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
不要忘记在您的应用程序的 AndroidManifest 中进行输入 class。
为项目中的每个 Activity 添加 onPause 和 onResume,或者您可以创建一个扩展 AppCompatActivity/FragmentActivity 的 BaseActivity,并且您的所有项目 activity 都必须扩展 BaseActivity
@Override
protected void onResume() {
super.onResume();
ProjectApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
ProjectApplication.activityPaused();
}
收到广播后,您可以检查 activity 是在前台还是后台
@Override
public void onReceive( Context context, Intent intent )
{
if ( ProjectApplication.activityVisible) {
// application is in foreground and running
// do stuff here
}
else
{
// application is in background
// do stuff here
}
}
如果应用程序已关闭或在后台 运行,但如果应用程序已打开或 运行 在前台我想直接显示对话框。
我有这个代码:
@Override
public void onReceive( Context context, Intent intent )
{
if ( RunningHelper.isAppRunning(context, Constants.PROJECT_NAME ) )
{
Log.d("Running", "--------APP RUNNING");
}
else
{
Log.d("Running", "--------APP NOT RUNNING");
showNotification();
}
}
我的跑步助手:
public static boolean isAppRunning(final Context context, final String packageName) {
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
if (procInfos != null)
{
for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
if (processInfo.processName.equals(packageName)) {
return true;
}
}
}
return false;
}
问题是应用程序总是检测到 运行 onReceive(),有人知道如何正确执行吗?谢谢
实施自定义应用程序class
public class ProjectApplication extends Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
不要忘记在您的应用程序的 AndroidManifest 中进行输入 class。
为项目中的每个 Activity 添加 onPause 和 onResume,或者您可以创建一个扩展 AppCompatActivity/FragmentActivity 的 BaseActivity,并且您的所有项目 activity 都必须扩展 BaseActivity
@Override
protected void onResume() {
super.onResume();
ProjectApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
ProjectApplication.activityPaused();
}
收到广播后,您可以检查 activity 是在前台还是后台
@Override
public void onReceive( Context context, Intent intent )
{
if ( ProjectApplication.activityVisible) {
// application is in foreground and running
// do stuff here
}
else
{
// application is in background
// do stuff here
}
}