gpt4 book ai didi

Android Broadcast Receiver SharedPreferences 在初始 Activity 的 onResume 上为空

转载 作者:行者123 更新时间:2023-11-30 02:04:40 27 4
gpt4 key购买 nike

这是我在 MainActivity 中的 onResume 调用:

@Override
public void onResume() {
super.onResume();

SharedPreferences settings = context.getSharedPreferences(INSTALL_PREFERENCE, 0);
String referrerString = settings.getString(REFERRAL_KEY, null);
Map<String, String> params = new HashMap<~>();
if (referrerString != null){
params.put("referrer", referrerString);
}
}

这是我在扩展 BroadcastReceiver 的类中的 onResume:

@Override
public void onReceive(Context context, Intent intent){
try{
String referrerString = intent.getStringExtra("referrer");

if(null != referrerString){
String referrer = URLEncoder.encode(referrerString, "UTF-8");
context.getSharedPreferences(INSTALL_PREFERENCE, Context.MODE_PRIVATE).edit().putString(REFERRAL_KEY, referrer).commit();
}

}
catch (Exception e){
//don't handle exceptions for now
}
}

问题是,当我通过打开应用程序调用 MainActivity 时,我的应用程序不会在第一次打开时返回 referrerSharedPreferences 不会在第一个应用程序打开时存储我的 referrer 是有原因的吗?我想在第一次打开而不是第二次打开时传回 referrer

最佳答案

on resume() 将在广播接收器之前执行,因此第一次您可能会收到引荐来源网址的空值或默认值,稍后如果您重新打开 Activity ,您可能会获得正确的值,因为 onReceive () 将在此时执行。

如果您的应用程序有任何设置首选项屏幕,它实际上仅在打开后才初始化设置,那么您可能必须在使用它之前使用默认值初始化所有首选项。这可能是有时您打开应用程序时会得到正确值的原因,因为您可能已经打开了设置屏幕。

关于Android Broadcast Receiver SharedPreferences 在初始 Activity 的 onResume 上为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com