Tag: 设计模式

如何从Firebase数据库中删除用户

所以我想添加一个用户删除他的帐户到我的应用程序的function..简单的权利? 我看文件,它很容易: FirebaseAuth.getInstance().getCurrentUser().delete() 但是,FirebaseDatabase和Storage中的所有数据仍然保留。 这是我的结构(给予或承担) 在firebase存储它更简单一点,所以我不包括在这个问题.. 现在的问题是,用户几乎与所有的节点有关联,并且有很多地方需要删除。 从android设备用户发送“DeleteUserRequest”到服务器,服务器负责删除用户。 但做完方法后,它的地狱! 我需要借用爸爸的显示器来编码,因为太深的嵌套调用! 这里是方法 public static void deleteUser(DeleteUserRequest request, ExecutorService executorService) { deleteUserReferences(request.getUserId(), executorService); deleteUserStorage(request.getUserId()); } /** * Delete Tree * – /grades/userId * – /subjects/userId * – /user_groups/userId -> save groupIdList * – /group_members/groupId/userId * – /groups/groupId/ [where createdBy=userId] save friendIdList * – /user-friends/friendId/userId * – /user_tokens/userId […]

Android:动态权限请求设计模式

我在android编程方面很新颖。 我想问一下关于startActivityForResult()和ActivityCompat.requestPermissions()函数及其设计。 我知道这些函数的结果是分别由另一个Activity函数( onActivityResult()和onRequestPermissionsResult() )处理的。 但我不明白为什么这样设计。 尤其是使用ActivityCompat.requestPermissions() 。 为什么我必须控制是否有权限( ContextCompat.checkSelfPermission() ),如果我没有要求它( ActivityCompat.requestPermissions() )。 如果我得到这个许可,然后处理完全不同的function? 我希望有这样的想法: askPermission(Context context, String permission, Runnable permissionGranted, Runnable permissionDenied) 如果我已经有权限,或者如果我从用户那里得到它,它将调用permissionGranted。 有了这个function,我将不得不关心,如果我有权限,或者我没有它。 现在,我必须distonguish如果我有权限,然后做同步任务,或者我没有它,然后在onRequestPermissionsResult() ,我经常做同样的,如果我已经有权限做的“异步”任务。 我的问题是:是否有一些原因,为什么这样设计的权限? 有没有一些function,我上面写了让我只是说如果我有什么做什么,如果我没有权限(以function的方式)做什么? 还是有一些设计模式,以便于处理权限和结果的启动活动? 感谢您的时间和一些解释,如果你知道为什么这个设计很好。

Kotlin / Android应用程序 – 从外部活动更改视图元素

我正在使用kotlin lang来创建我的Android应用程序。 我想创建一个对象(单身人士),专门用于动态地(如按钮等)模仿我的主要活动的视图组件,并将由我的主要活动本身使用。 出现了一些问题。 首先,对象是(当然)不是活动types,所以我不能使用例如findViewById和其他活动的function等我试图通过传递主要活动的对象的构造函数来解决这个问题,但它是不允许的 – 因为对象不能他们的构造函数。 此外,我不知道,如果这个应用程序设计是可以接受的,至少有良好的做法。 如果不是真的 – 我应该使用什么样的设计模式来分离如何改变布局的逻辑和只修改视图元素的代码? 提前感谢您的任何建议。

尽量减少class级中的代码重复?

我正在使用下面的类通过使用套接字发送数据到我们的消息队列以同步的方式或异步的方式,如下所示。 到目前为止,我在下面的课程中复制了很多代码。 我有以下5个方法用于同步或异步发送数据,我相信可能有更好的方法来重写这些方法。 public class SendRecord { private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2); private final Cache cache = CacheBuilder .newBuilder() .maximumSize(2000000) .concurrencyLevel(100).build(); private static class Holder { private static final SendRecord INSTANCE = new SendRecord(); } public static SendRecord getInstance() { return Holder.INSTANCE; } private SendRecord() { executorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { […]

策略 – 通过接口types自动注册

我有很多的行动。 所有的动作都和一些在所有动作中传递的Object / Context一起工作。 我想使用模式策略/政策。 这里是Kotlin的例子: interface Action { val name: String fun run(ctx: Context) } class Multiply: Action { override name = “MULTIPLY” override fun run(ctx: Context) { writeToDb(ctx.id, ctx.number * 2) } } class Substract class SendNotification etc… 所以我想在启动时注册所有策略。 从Enum这样的结构中选择策略。 val action = selectAwaitingAction() val ctx = selectCtxById(action.transaction_id) perfromAction(ctx, actions.getByName(action.name)) fun performAction(ctx Context, […]

Kotlin – 在另一个对象(不是类)中的伴侣对象的替代?

我想在我的Kotlin Android应用程序中有一些静态定义它的内部状态的单例对象。 据我所知,Kotlin中的object是单身人士,所以我正在尝试这种方法: object MySingleton { public const val _DEF_DEFINITION_NO_ONE: Byte = 1; public const val _DEF_DEFINITION_NO_TWO: Byte = 2; (…) } 这很好,但问题是,为了能够使用这些定义,现在我必须首先创建Object的实例。 只是想知道如果我能够在Kotlin创建这种types的构造并有权访问这些定义而不创建MySingleton实例吗? 答案将是与其他语言中的static类似的companion object ,但它不允许在对象内部,只在类内。 当然,我可以保留这个定义或者使这些定义成为全局的,但是想知道是否可以按照我描述的方式去做? 或者,也许我应该设计另一种方式吗?