确定我的应用是否在前台

时间:2016-03-01 15:38:53

标签: android

我有一个IntentService,每小时刷新一次来自服务器的数据(没有推送通知)。如果有任何新数据,它应该在应用程序内部更新界面,或者当我的应用程序不在前台时发送通知。 我的问题是:如果我的应用程序在前台运行,如何确定哪个应用程序在前台运行或更容易? 我不需要知道什么活动只是我的应用程序的一般包名完全没问题!

到目前为止,我发现的两件事我反对使用:

  1. ActivityManager.getRunningTasks() - 它已被弃用,并且谷歌提到将来可能会中断
  2. UsageStats - 看起来不错,但如果用户必须提供我的应用UsageStats权限,那真的很不方便。
  3. 我有点困惑,为什么我无法找到解决方案......我认为这不是一种不寻常的做法或其他什么。

    谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过简单的方式解决您的问题,但这可以通过您自己的包裹和服务来实现

1:在你的主Activity中定义布尔变量
2:在主活动的onCreate方法中将变量值更改为true
3:在Ondestroy metheo中将其改为false

public class MainActivity extends AppCompatActivity {
public static boolean appStatus = false;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    appStatus = true;//fill the variable true : app is running
    setContentView(R.layout.activity_main);

}


@Override
protected void onDestroy() {
    super.onDestroy();//fill the variable false : app is not running
    appStatus = false;
}

}

4:在您的服务中,您可以随时随地查看

    if(MainActivity.appStatus )
    {
        ......yourCode
    }