小编Tue*_* AM的帖子

Android系统.应用程序关闭时WorkManager是否正在运行?

我想安排每晚数据库更新.所以我使用新的Android WorkManager.我的理解是,一旦安排它将始终独立于应用程序的生命周期在后台运行.是对的吗?我的第一次测试显示Work只在应用程序运行时执行.

val locationWork = PeriodicWorkRequest.Builder(UpdateDatabaseWorker::class.java, 24, TimeUnit.HOURS)
                        .addTag("DATABASE_UPDATE_SERVICE")
                        .build()
WorkManager.getInstance().enqueue(locationWork)
Run Code Online (Sandbox Code Playgroud)

android android-service android-jetpack android-workmanager

25
推荐指数
2
解决办法
2万
查看次数

当返回空结果时,房间查询返回 Maybe<List> 使应用程序崩溃

我有一个房间查询:

@Query("SELECT * FROM classes WHERE _id IN(:values) ORDER BY date DESC")
fun getClassesByIds(values: List<Int>): Maybe<List<YClass>>
Run Code Online (Sandbox Code Playgroud)
compositeDisposable.add(viewModel.getClassesById(classesTaken)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .doOnSuccess { list ->
                        list.forEach {

                            setupInfo(student)
                        }
                    }
                    .doOnError { it.printStackTrace() }
                    .subscribe())
Run Code Online (Sandbox Code Playgroud)

当我从活动导航回来时,结果为空应用程序崩溃。实际上崩溃是在执行另一个查询时发生的。即使没有任何问题,第二个查询也会出错。

引起:android.arch.persistence.room.EmptyResultSetException:查询返回空结果集:SELECT * FROM classes WHERE _id IN() ORDER BY date DESC

03-06 00:07:53.476 31132-31199/? I/InputDispatcher: 窗口 'Window{135734f u0 com.labfoodandfriends.nikitagudkovs.jlog/com.labfoodandfriends.nikitagudkovs.jlog.activity.student_and_teacher.StudentOverview}' 花了 4249.1ms 处理最后一个输入事件:KeyEvent(deviceId) =0x00000101,动作=1,标志=0x00000048,keyCode=4,scanCode=0,metaState=0x00000000,repeatCount=0),policyFlags=0x6b000002 03-06 00:07:53.612/1373.612-137d I/zygote64:编译器分配了 6MB 来编译 void android.view.ViewRootImpl.performTraversals() 03-06 00:07:53.661 13731-13736/com.labfoodandfriends.nikitagudkovs.jlog I/zygote64:代码=全码缓存集合502KB, data=339KB 03-06 00:07:53.662 13731-13736/com.labfoodandfriends.nikitagudkovs.jlog I/zygote64:代码缓存收集后,
在 io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) 03-06 00:07:55.875 13731-13731/com.labfoodandfriends.nikitagudkovs.jlog W/
System.reerr …

sql android maybe rx-java2 android-room

6
推荐指数
2
解决办法
5508
查看次数

Android会议室数据库不会导出所有数据

我正在尝试设置Room数据库备份功能。问题是,一旦下载,sql数据库文件在应用程序中将不包含最新的数据集。它总是会丢失一些最新记录。是否有导出会议室数据库的正确方法?PS:使用sqliteHelper处理我的数据库时,我没有遇到类似的问题,因此我想它一定与Room有关。

我这样做的方式:

@Throws(IOException::class)
private fun copyAppDbToDownloadFolder(address: String) {
    val backupDB = File(address, "studioDb.db") 
    val currentDB = applicationContext.getDatabasePath(StudioDatabase.DB_NAME)
    if (currentDB.exists()) {
        val src = FileInputStream(currentDB).channel
        val dst = FileOutputStream(backupDB).channel
        dst.transferFrom(src, 0, src.size())
        src.close()
        dst.close()
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-sqlite android-sql android-room

6
推荐指数
3
解决办法
2940
查看次数

保持内存清洁并杀死 ViewController

我注意到,当我浏览 iOS 应用程序时,内存堆栈会随着每个打开的 viewController 的增加而增长。

我的导航基于转场,并且self.dismiss()在执行每个转场之前都会进行导航。不过,看起来 viewControllers 堆栈在内存中。

我怎样才能避免这种情况?

在 Android 中,finish()会杀死 Activity(在大多数情况下),因此我需要在 iO 中找到替代方案。

xcode memory-management viewcontroller ios swift

1
推荐指数
1
解决办法
1439
查看次数