我们使用 Fabric Crashlytics 和 BETA 来分发我们的构建,我们注意到它向应用程序数据添加了某些不需要的首选项。其中之一称为“TwitterAdvertisingInfoPreferences”,它似乎对我们的使用没有用处,可能会成为隐私问题。我们如何防止 Crashlytics 添加它?
android crashlytics-beta android-sharedpreferences crashlytics-android
在活动被杀之前(OnDestroy被叫时),我保存了一些int值SharedPreferences.
但我注意到的是,要保存的值需要大约一秒钟,但应用程序在销毁之前不会等待Activity.
Wait它可以在被杀之前做些什么吗?
这是我的例子:
@Override
public void onDestroy(){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("finalXPos", finalX);
editor.putInt("finalYPos", finalY);
editor.commit();
super.onDestroy();
removeView();
}
Run Code Online (Sandbox Code Playgroud)
====================== >>编辑<< ======================
我犯了一个错误,并说这是为了一个,Activity但事实并非如此.我正在调用onDestroy一个服务,不幸的是没有onPause办法覆盖那里......
android android-service android-studio android-sharedpreferences android-ondestroy
我的应用程序在Android服务中使用LocationListener来更新频繁的位置.应用程序将一些位置过滤器相关数据存储在共享首选项 要求是尽可能频繁地更新位置.我在侦听器的onLocationChanged中从共享首选项中检索数据.这是我的代码
public class MyLocationListener implements LocationListener {
public void onLocationChanged(final Location loc) {
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
int filterOne = sharedPreferences.getInt("filter_data",100);
------
------
//code to process location with filter
------
------
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,sharedPreference以重复的方式使用.
我已经尝试在onLocationChanged之外放置过滤器变量,但是当重新启动服务时,值会丢失并设置为零.
我只是想知道这是不是很好的做法?我应该使用其他选项吗?
出于某种原因,每次返回默认值都为true.我卸载了我的应用程序并重新安装,我执行以下操作来初始化值.但由于某种原因,布尔值设置为true而不是false.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(LoadingActivity.this);
final int locationType = prefs.getInt(Constants.PREFS_LOCATION, 0);
final boolean skipWhatsNew = prefs.getBoolean(Constants.PREFS_DONT_SHOW_WHATS_NEW, false);
Log.v("loading activity : " , " " + skipWhatsNew);
Run Code Online (Sandbox Code Playgroud)
我不确定它为什么这样做,因为它之前只是将值设置为false.
我已经看过类似的问题,但没有一个帮助过,所以任何帮助都会很好,谢谢.
我已经看过的问题,
Android - 即使我存储了true,SharedPreference.getBoolean检索为false?
SharedPreferences.getBoolean每次都返回true
上面的代码也是我第一次访问它,根据我的理解,它应该设置为false,因为它是第一次创建.(关于这个问题的第一个答案提到这个,除非我错了)
我用谷歌搜索了这个,并找到了一些我觉得很困惑的答案,因为我是初学者.我正在努力实现OnSharedPreferenceChangeListener()我SharedPreferences的改变.
到目前为止我的代码是:
final SharedPreferences rates_storage = this.getApplicationContext().getSharedPreferences("uk.chiraggalaiya.test", 0);
final SharedPreferences.Editor rates_storage_editor = rates_storage.edit();
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rates_storage_editor.putString("something", "something");
rates_storage_editor.apply();
}
});
Run Code Online (Sandbox Code Playgroud)
但是现在我不确定如何实现OnChangeListener().
让用户登录并获取他们的uid后,如何将他们的uid保存到SharedPreferences上,以便我可以在整个项目中访问它?这是我的代码来获取他们的uid:
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
String userId = firebaseUser.getUid();
String userEmail = firebaseUser.getEmail();
}
}
};
Run Code Online (Sandbox Code Playgroud) android firebase firebase-authentication android-sharedpreferences
我正在使用MVP构建应用程序,而我正在使用存储库模式.我有一个本地数据源,这是一个存储某些信息的数据库.我有一个远程数据源,在其中使用Retrofit,我发出了API请求.该请求有一个@Query,这是一个存储在SharedPreferences中的String.我想将SharedPreferences作为数据源添加到存储库,但由于远程数据源应该使用这些SharedPreferences--这将是与远程数据源不同的数据源 - 我不再认为这种体系结构如此清晰.
非常感谢您的帮助.
mvp android repository-pattern android-sharedpreferences retrofit2
我希望能够在摘要字段中显示 EditTextPreference 的值。具体来说,我想在 PreferenceFragmentCompat 中执行此操作。
import android.support.v7.preference.PreferenceFragmentCompat;
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
}
}
Run Code Online (Sandbox Code Playgroud)
首选项文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:defaultValue="DEVICE01"
android:key="device_id"
android:title="Device ID" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我见过其他解决方案,但没有一个包括如何在 PreferenceFragmentCompat 中执行此操作。
android summary edittextpreference android-sharedpreferences
描述:我有两个应用程序App1和App2.我正在使用App1在SharedPreferences中存储一些键值对.我在App2中访问相同的键值.
我启动了app1.创建值为abc的密钥.现在我将app1保留在后台并启动App2,然后将键值更改为def.
当我将app1从后台启动到前台并访问键值时.检索到的值是abc而不是更新的值def.如果我从后台杀死App2并重新启动它,那么只会更新更新的值
我一直在加载并将 a 保存Set<String>到 Android 上SharedPreferences,它似乎工作正常,直到我测试了杀死它application并意识到未保存字符串集。
Set<String> stringSet = sharedPreferences.getStringSet(Constants.PREF_SHOULD_LOAD_SET, null);
if (stringSet != null) {
if (stringSet.contains(data)) {
stringSet.remove(data);
} else {
stringSet.add(data);
}
...
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putStringSet(Constants.PREF_SHOULD_LOAD_SET, stringSet);
editor.apply();
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的一些事情: