【问题标题】:How to check if an app is being opened - Android Studio如何检查应用程序是否正在打开 - Android Studio
【发布时间】:2019-08-07 20:11:50
【问题描述】:

我正在制作游戏并使用 sharedPreferences 为玩家保存数据。我现在设置它的方式,每次加载主应用程序(第一页)时,都会加载它之前保存的旧数据。所以,想象一个玩家有 100 美元,然后他们退出了应用程序。再次打开应用后,将加载此数据,一切正常。

但是,问题是,如果玩家的钱在另一个活动中发生了变化,我现在设置的方式是,每当玩家导航回主要活动时,数据就会被加载。因此,如果玩家在主要活动中有 100 美元,则此信息每隔几秒就会保存在主要活动中。如果玩家在第二个活动上花费 50 美元,当他们返回主活动时,由于主活动上次保存的数据是 100 美元,它将加载 100 美元。

这是一个问题,解决方法是仅在应用打开时加载数据。所以就像我不想在玩家每次导航到主要活动时加载数据,但只有在他们打开应用程序时才加载数据。我需要一个简单的 if() 布尔语句来执行此操作,但我不确定我需要的语句是什么。

谢谢!

【问题讨论】:

    标签: java android kotlin sharedpreferences


    【解决方案1】:

    sharedPreferences 中存储一个布尔值,并检查它是否存在或者在创建活动时是否为假/真,例如为"hasLoaded" 存储一个值为truefalse 的值。检查onCreate 中的这个值,然后做相应的逻辑。

    或者,

    在你的 mainActivity 中为hasLoaded 创建一个静态变量,然后在 onCreate 中,做你想做的所有事情,然后将其更改为 true。

    static boolean hasLoaded = false;
    
    if(!hasLoaded){
    //all your logic here
    hasLoaded = true;
    }
    

    注意: 将其存储在sharedPrefs 中将确保您的初始化只会在应用程序的所有使用情况下发生一次,而将其存储在静态变量中将确保它仅在应用程序的每次运行时发生一次

    【讨论】:

    • 该死的你真快! :) 像你建议的那样使用了静态布尔的想法,就像一个魅力,非常感谢!只要堆栈交换允许我(需要等待几分钟),我就会接受它!
    • 不用担心:D 我改变了我的建议顺序,以便更好的(我认为共享首选项)位于顶部:D ​​静态的应该是您的第二个选择
    • 我以前从未在 android 中制作过游戏:D 你有进步吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多