【Android】【自动填充】自定义AutofillService(一):AutofillService运行原理

AutofillService生效条件:
在系统设置里启用了对应的自动填充服务
在应用清单里申请了android.permission.BIND_AUTOFILL_SERVICE权限
控件设置了正确的填充类型和填充规则

填充表单流程:
用户点击了一个需要自动填充的控件,View调用AutofillManager.notifyViewEntered(View)方法,通知填充服务有控件需要自动填充
填充服务创建一个ViewStructure对象,它代表了整个屏幕上的所有View结构,并将其传给AutofillService
填充服务调用AutofillService.onConnected()方法,AutofillService是一直运行在后台的,每次填充只是调用onConnected()方法,并不是调用bindService()方法
填充服务调用AutofillService.onFillRequest(FillRequest, CancellationSignal, FillCallback)方法,获取可用于填充的表单数据
填充服务调用FillCallback.onSuccess()或FillCallback.onFailure()方法,返回自动填充结果
填充服务调用AutofillService.onDisconnected()方法,断开和服务的关联
填充服务将结果将显示在UI界面上

保存表单流程:
用户点击自动填充控件,执行AutofillService.onFillRequest时,获取所有需要填充表单的节点信息,即SaveInfo,保存到FillResponse中
用户退出Activity时,填充服务根据SaveInfo信息,判断有没有表单发生了变更,如果有变更,则询问是否保存新表单
填充服务调用AutofillService.onSaveRequest()方法,保存表单数据
填充服务调用SaveCallback.onSuccess()或SaveCallback.onFailure()方法,返回保存结果

onFillRequest返回值:
当找到合适的填充建议时,调用FillCallback.onSuccess(FillResponse)
当未找到合适的填充建议时,调用FillCallback.onSuccess(null)
当遇到逻辑或代码错误时,调用FillCallback.onFailure(String message)
不管成功或失败,都要执行回调函数,否则请求会一直等待,直至超时,会影响性能

onSaveRequest返回值:
当保存建议成功时,调用SaveCallback.onSuccess()
当保存建议失败时,调用SaveCallback.onFailure(String message)
不管成功或失败,都要执行回调函数,否则请求会一直等待,直至超时,会影响性能

你可能感兴趣的:(android)