首页 > 解决方案 > 如何使用 putExtra() 传递具有不同值的相同数据

问题描述

我正在使用一个需要知道应用程序是否在后台运行的服务类。为此,我创建了一个activityVisible在我的服务中调用的布尔变量。我需要不断更新它以了解应用程序是在后台还是处于活动状态。true我通过在onResume()我的活动中发送方法来做到这一点,如下所示:

intent.putExtra("Activity Visible", true)

false在这样的方法onPause()上:

intent.putExtra("Activity Visible", false)

但是,我在我的服务中打印了额外的内容,它总是得到true. 我认为它正在发生的是,一旦你添加了一个额外的,你就无法更新它的值,这可能是它不起作用的原因。

我可以用不同的方式做同样的事情吗?或者我正在实施的方式的解决方案?

标签: javaandroidkotlinandroid-intentservice

解决方案


您可以使用 SharedPreference 来存储应用程序的当前状态。

引用 SharedPreference

SharedPreferences sp = getSharedPreferences("prefs", Context.MODE_PRIVATE);

要在共享首选项中设置布尔值,您需要使用其编辑器,因此在 onPause 和 onResume 中应用此代码,同时根据您的需要更改“isVisible”值

boolean isVisible = true;
SharedPreferences.Editor  editor = sp.edit();
editor.putBoolean("activity_visible", isVisible);
editor.apply(); // use apply to confirm the edit

为了获取存储的值,您可以简单地使用它来引用它

boolean valueStored = sp.getBoolean("activity_visible", false /* Default value if not existed */);
Log.d("Activity State: ", "Boolean: " + valueStored); 

并使用该 valueStored 做任何你想做的事情。


推荐阅读