我在我的应用程序中偶然发现了Crashlytics发送的异常.客户端Android版本是5.1.1.我收到以下Stack跟踪:
致命异常:java.lang.RuntimeException包管理器已经死亡
android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:160)
com.google.android.gms.common.zzp.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.zzf.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.api.internal.zzar.zzaib (Unknown Source)
com.google.android.gms.common.api.internal.zzay.run (Unknown Source)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:422)
java.util.concurrent.FutureTask.run (FutureTask.java:237)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.internal.zzbhc.run (Unknown Source)
java.lang.Thread.run (Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
由android.os.DeadObjectException引起
android.os.BinderProxy.transactNative (Binder.java)
android.os.BinderProxy.transact (Binder.java:496)
android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo (IPackageManager.java:2169)
android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:155)
com.google.android.gms.common.zzp.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.zzf.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable (Unknown Source)
com.google.android.gms.common.api.internal.zzar.zzaib (Unknown Source)
com.google.android.gms.common.api.internal.zzay.run (Unknown Source)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:422)
java.util.concurrent.FutureTask.run (FutureTask.java:237)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.internal.zzbhc.run (Unknown Source)
java.lang.Thread.run (Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
背景信息:
我正在开发具有GPS功能的Firebase应用程序.我已经在前台服务中实现了Google Location API,到目前为止,这个错误仅发生在一个客户端故意运行我的应用程序的Foreground Service超过10天.在我的前台服务中我没有直接以任何方式调用包管理器.我能给你的唯一提示是我从Crashlytics收到的最后一个日志
@Override
public void onConnectionSuspended(int i)
{ …Run Code Online (Sandbox Code Playgroud) 在我当前的公司申请中,我有一个ForegroundService,在工作人员值班时运行(登录到应用程序).重要的是要保持这种前景的服务运行时用户登录是很重要的.为了从那里此前台服务被莫名其妙地杀害案件恢复(用户任务滑动意外或系统杀灭)香港专业教育学院实施与的jobscheduler周期性工作,这将重新激活ForegroundService在它得到的情况下关掉.这项技术在Android 8 OREO之前效果很好.START_STICKY和其他技术本身并不适合我.
在Android 8中,一旦前台服务被杀死,定期作业也会被杀死.我在logcat中收到通知,不允许该作业运行.根据我的理解,即使应用程序处于后台或被杀,乔布斯也能够运行.它以前所未有的方式开发OREO设备.
据我所知,我可以通过在应用设置中启用"自动启动"选项来解决这个问题.但由于没有办法知道员工是否认真,这也不是一件可靠的事情.
所以我的问题: - 为什么Job Scheduler在Android 8中停止工作? - 我可以使用任何其他可靠的技术让我的ForegroundService从ANDROID OREO中关闭恢复吗?
香港专业教育学院读https://medium.com/exploring-android/exploring-background-execution-limits-on-android-oreo-ab384762a66c,但没有回答我的问题
非常感谢你
android foreground-service android-jobscheduler android-8.0-oreo
我对 Flowables 有问题并将它们添加到复合材料中。我想从 Observable 切换到 Flowable,因为该操作可能会发出 1000 个或更多的值。我对 rxjava2 有点缺乏经验,所以如果这个问题很愚蠢,请原谅我:)
到目前为止,我使用了这样的 observable:
public Observable<String> uploadPictureRx(String path)
{
return Observable.create(new ObservableOnSubscribe<String>()
{
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception
{
Uri file = Uri.fromFile(new File(path));
String segment = file.getLastPathSegment();
UploadTask uploadTask = reference.child("SomeChild").child(segment).putFile(file);
uploadTask.addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception exception)
{
e.onError(exception);
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
{
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
{
//noinspection VisibleForTests
downloadUrl = taskSnapshot.getDownloadUrl();
String url = downloadUrl.getPath();
e.onNext(url);
e.onComplete();
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
{
@Override
public …Run Code Online (Sandbox Code Playgroud)