这个主题的小故事:应用程序只是在确认后用对话框更新点击行的值.在房间数据库上使用分页方案.
添加或删除项目时,将获取最新数据集并将其传递给submitList方法,然后可以看到所有更改并运行良好.
问题从那里开始,如果现有项目更新,则再次正确获取最新数据集并传递给submitList,但这次似乎没有变化.
当我调试DIFF_CALLBACK
并抓住我的项目时areItemsTheSame
,newHistory
和oldHistory
值是一样的!(怎么样!)
submitList
方法中可能有任何错误?
初始化后,observe
从房间中提取列表并传递给mHistoryAdapter.submitList(it)
.然后,如果我更新一个项目,观察再次被触发(我在param中看到更新的值it
)并传递给submitList
.
不幸的是,适配器不会改变......
mResolvedAddressViewModel = ViewModelProviders.of(this).get(ResolvedAddressViewModel::class.java)
mResolvedAddressViewModel.getAddresses(false).observe(this, Observer {
mHistoryAdapter.submitList(it)
})
Run Code Online (Sandbox Code Playgroud)
所有部件
模型
@Parcelize
@Entity
data class ResolvedAddress(
@PrimaryKey var id: String = UUID.randomUUID().toString(),
var requestedLat: Double = 0.0,
var requestedLon: Double = 0.0,
var requestedAddress: String = "",
var lat: Double,
var lon: Double,
var address: String,
var country: String,
var countryCode: String,
var city: …
Run Code Online (Sandbox Code Playgroud) android android-architecture-components android-paging androidx
我安装了一个虚假的位置应用程序,并设置我的位置不同.然后打开谷歌地图和微信应用,
然后我想阻止微信分析我以前收到的真实位置和新假位置.
但同样的结果,它检测到我的真实位置.
我真的很想了解他们是如何做到这一点的.有任何想法吗?
我试过的
UPDATE
即使在禁用时也使用GPS.
07-02 11:46:15.504 2346-2356 /?D/LocationManagerService:请求434a7e28 gps从com.tencent.mm请求[ACCURACY_FINE请求gps = + 1s0ms最快= + 1s0ms](10173)
结论
我在我的应用程序中使用ABI拆分
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
universalApk true
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用x86_64仿真器然后切换到设备(armeabi-v7a)(以及其他人),android studio将app-x86_64-debug.apk发送到设备
09/27 17:17:49: Launching app
$ adb push SampleFolder\app\build\outputs\apk\app-x86_64-debug.apk /data/local/tmp/sample.package
$ adb shell pm install -r "/data/local/tmp/sample.package"
pkg: /data/local/tmp/sample.package
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
Run Code Online (Sandbox Code Playgroud)
编辑:我如何得到这个问题的方式
Android Studio 2.2.1
在发布2.2.1之后,我发挥了一点分裂,然后一切看起来都不错.不幸的是,我再次遇到同样的问题.为了确保清楚,我创建了新的android项目和导入的realm数据库(有本机库),然后,
将拆分部分添加到gradle
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
}
}
Run Code Online (Sandbox Code Playgroud)
创建应用程序类
public class SampleApp extends Application {
@Override …
Run Code Online (Sandbox Code Playgroud) 今天,当我尝试使用我的代码时,脑子里出现了一些可疑的东西,关于gps提供程序,gps硬件,gps图标和精确的位置许可.
我在三星galaxy s3上看到了我的代码和gps图标,Htc是一个m8.并且gps已禁用
mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 10, 0, this, Looper.myLooper());
...
@Override
public void onLocationChanged(Location location) {
mListenerRef.get().onLocationChanged(location);
}
Run Code Online (Sandbox Code Playgroud)
Galaxy s3 - Gps图标没有出现,它没有触发onLocationChanged方法.(没关系)
Htc一个m8 - Gps图标出现,闪烁,并点燃 onLocationChanged(但是怎么样?)
此时问题弹出
然后我在galaxy s3上启用了gps
(前2分钟)Gps图标出现(但没有闪烁),触发onLocationChanged方法(但是如何?)
(2分钟后)Gps图标出现(闪烁),触发onLocationChanged方法
再次出现问题
我只是想在我的应用程序中管理广告的失败情况。因此,onError
由于某种原因(例如没有网络)触发后,我只是调用loadAd
了NativeBannerAd
如下所示的方法。但应用程序因called more than once
错误而崩溃。
mFacebookNativeBannerAd = NativeBannerAd(context, id)
val builder = mFacebookNativeBannerAd.buildLoadAdConfig()
builder.withAdListener(object : NativeAdListener {
// ...
// Other callback methods
override fun onError(p0: Ad?, error: AdError?) {
mFacebookNativeBannerAd.loadAd() // --> 'called more than once' exception
}
})
mFacebookNativeBannerAd.loadAd()
Run Code Online (Sandbox Code Playgroud)
我在文档上没有看到有关此异常的任何描述。NativeAd
, NativeAdsManager
,InterstitialAd
对象适用于上述场景。但 NativeBannerAd 没有。
我怎样才能再次加载广告?
我使用的观众版本是 audience-network-sdk:5.6.1
扩展是否具有调用膨胀视图的魔力?据我所知,我应该打破代码和呼叫的和谐findViewById
目的是layout_ongoingView
在某个时候使布局膨胀,并根据场景再次隐藏和显示
<ViewStub
android:id="@+id/viewStubOngoing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inflatedId="@+id/ongoingView"
android:layout="@layout/layout_ongoingView" />
Run Code Online (Sandbox Code Playgroud)
和代码
override fun hideOngoingPanel() {
if (viewStubOngoing !is ViewStub) {
findViewById(R.id.ongoingView).visibility = View.GONE
}
}
override fun showOngoingPanel() {
if (viewStubOngoing !is ViewStub) {
findViewById(R.id.ongoingView).visibility = View.VISIBLE
} else {
viewStubOngoing.inflate()
}
}
Run Code Online (Sandbox Code Playgroud) 或者认为此场景的拦截器适用?
我们的应用程序使用OkHttp下载文件(应用程序的新版本,每日数据库等)
有时服务器在app流式传输字节时失败(顺便说一下,问题是,recvfrom失败:ECONNRESET)
所以为了解决这个问题,我只想编写OkHttp重试拦截器.但似乎这适用于不流式传输的操作.
是否有解决方案(如拦截器)来处理这种情况?
要做更清楚的阐述
0%============================== 100%(刚开始流式传输)
0%=== ========================= 100%(已完成10%)
0%====== ======================== 100%(已完成20%)
0%====== ======================== 100%(ECONNRESET - 由同行重置连接)
就在这时,流媒体就停止了.我想从OkHttp那里得到的东西是认识到这种情况然后从头开始流(而不是20%)
相关代码在这里,注意评论
Call call = client.newCall(new Request.Builder().url(url).get().build());
Response response = call.execute();
// PROBLEM DOES NOT OCCUR THERE
// PROBLEM DOES NOT OCCUR THERE
// PROBLEM DOES NOT OCCUR THERE
if (response.code() == 200 || response.code() == 201) {
InputStream inputStream = null;
try {
long downloaded = 0; …
Run Code Online (Sandbox Code Playgroud) 我的项目包括web和android客户端.我想结合Google跨平台登录和环回第三方登录.
在我的场景中,我永远不会要求用户名和密码.用户仅在网络和Android应用上使用Google登录按钮进行身份验证和授权.
让我们假设,这是您第一次通过我的网站登录Google登录.在环回第三方方案中,如果您不在db上,则会创建一个帐户对应的提供者和外部ID.(在这种情况下,提供商是谷歌和外部ID是您唯一的谷歌ID).这是针对web,loopback-example-passport
所以,假设上面的android场景.您只需点击Google登录按钮,然后环回服务器就可以执行以上操作(如网络)
这是否有内置的环回方式?如果没有,我如何正确地将此场景集成到环回中?
我在尝试使用 Android 模拟位置时遇到问题,我的主要目标是将 Android GPS 设置为认为我们处于不同的位置,又名假 GPS。
我目前尝试了两种不同的类似解决方案,可在这两个网站上找到:
这两个教程都是 2012 年的,我不知道它们是否已经过时,或者我很难实施它们。
首先我确保我有权限:
注意:1 和 2 都被检查,如果它们不可用,我使用requestPermissions函数请求许可。第三个是无法询问的,实际上只能在调试模式下通过AndroidManifest.xml添加。
我还确保在“设置”>“开发人员选项”>“允许模拟位置”中选择了我的应用程序。
毕竟,我已经尝试通过 OnCreate 方法或 OnClick 按钮调用这个函数:
public void mockLocation(){
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy( Criteria.ACCURACY_FINE );
String mocLocationProvider = lm.getBestProvider( criteria, true );
if ( mocLocationProvider == null ) {
Toast.makeText(getApplicationContext(), "No location provider found!", Toast.LENGTH_SHORT).show();
return;
}
lm.addTestProvider(mocLocationProvider, false, false,
false, …
Run Code Online (Sandbox Code Playgroud) 在Marshmallow之前"允许模拟位置"选项可以通过编程方式更改(需要root)
Settings.Secure.putInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION, 1);
Run Code Online (Sandbox Code Playgroud)
但现在这个选项是特定于应用程序的,意味着您必须在开发人员选项中选择模拟器应用程序.
有没有办法以编程方式更改此设置(将我的应用程序插入允许列表)?
android ×10
gps ×2
location ×2
android-architecture-components ×1
android-gps ×1
androidx ×1
econnreset ×1
java ×1
loopbackjs ×1
okhttp ×1
okhttp3 ×1
strongloop ×1
viewstub ×1