java - 如何使用 putExtra() 传递具有不同值的相同数据
问题描述
我正在使用一个需要知道应用程序是否在后台运行的服务类。为此,我创建了一个activityVisible
在我的服务中调用的布尔变量。我需要不断更新它以了解应用程序是在后台还是处于活动状态。true
我通过在onResume()
我的活动中发送方法来做到这一点,如下所示:
intent.putExtra("Activity Visible", true)
false
在这样的方法onPause()
上:
intent.putExtra("Activity Visible", false)
但是,我在我的服务中打印了额外的内容,它总是得到true
. 我认为它正在发生的是,一旦你添加了一个额外的,你就无法更新它的值,这可能是它不起作用的原因。
我可以用不同的方式做同样的事情吗?或者我正在实施的方式的解决方案?
解决方案
您可以使用 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 做任何你想做的事情。
推荐阅读
- google-cloud-composer - Google Cloud Composer vCPU 时间混乱
- shopify - 从自定义窗口中选择时如何在 Shopify 中获取 Collection 对象
- math - 计算营养素的最有效方法
- c++ - 单独的模板类声明和实现
- docker - Docker Buildx 功能 - 不缓存
- javascript - Laravel SortableJS AJAX - 如何重新排列顺序
- django - 未提供必填字段时保存表单集?
- ruby-on-rails - Rails - 范围上的逻辑运算符,这可能吗?
- python - 将数据框字符串类别转换为数字
- macos-catalina - 用于移动文件类型的 Apple 脚本