小编Muh*_*mil的帖子

Kotlin 喜欢 Javascript 中的作用域函数(let、also、apply、run)吗?

是否可以在 Javascript/Typescript 中创建类似 Kotlin 的作用域函数?有没有图书馆可以做到这一点?

参考: https: //kotlinlang.org/docs/reference/scope-functions.html

javascript kotlin typescript

11
推荐指数
2
解决办法
5708
查看次数

使用lambda时,调试器断点命中文件中的同一行,但生成版本不同

我们的项目中有许多不同的构造,口味和尺寸。但是在更新到Android Studio 3.5之后,我们注意到了一个奇怪的行为:当我们在存在多个构建变体的文件的某些lambda中创建断点时,调试器将无法正常工作,并且在文件中被击中(相同名称和软件包)。有趣的是,只有当断点设置为在lambda的主体中触发并且工作正常时,才会发生整个问题

因此,总而言之,要重现此问题,您必须:

  1. 创建两个版本,并在每个版本中创建一个具有相同名称的文件
  2. 创建包含X两种口味的某行上包含lambda的代码

现在,只会发生以下两种情况之一,但不会同时发生:

  • 当您使用风味A并在行上创建触发器时X,它将在同一行上中断,但在风味B的文件中
  • 当您处于风味B中并在行上创建触发器时X,它将在同一行中断,但在风味A文件中

以下是我们尝试重现该问题时的一些屏幕截图:

ActualFlavor的AuthRepository(活动内部版本): 在此处输入图片说明

DummyFlavor的AuthRepository: 在此处输入图片说明

所以问题是我们在做什么错?还是现在真的是Android Studio中的问题?

Android Studio版本= 3.5 kotlin版本= 1.3.50 build:gradle版本= 3.5.1

debugging intellij-idea kotlin android-studio

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

在与外部库相同的包中创建一个类,以便使用包私有类

我正在创建一个公共库类的对象,该对象在其代码中使用某些包私有类的对象。该包私有类有一些格式错误的逻辑。现在我想改变逻辑。除了下载库、更改其代码然后将其作为模块导入之外,您知道如何做到这一点吗?

到目前为止我所做的:

我通过创建一个具有相同名称的新自定义包来创建一个具有相同名称的新类。我的意思是我在根文件夹中创建了一个包com.abc.xyzX在其中创建了一个类。但问题是我的代码仍然使用该类的旧库版本X而不是这个新版本。我通过在我的类中附加调试器点来检查这一点X。有趣的是,当我浏览 Android Studio IDE 的代码导航工具时,它显示我的Y类正在使用我的X类版本,而不是库作者的版本。所以第二个问题是,这种技术在 Kotlin 中是否可行,如果可以,那么我做错了什么?

我通过在某处阅读以下几行得到了上述想法:

使用 Java,封装很容易被破坏,因为外部代码可以在您的代码使用的同一包中定义类,从而访问您的包私有声明

java oop android kotlin

8
推荐指数
0
解决办法
459
查看次数

使用getValue()从Firebase中的DataSnapshot解析为Java类

我知道如何使用简单的DataSnapshot对象解析到任何Java类public T getValue (Class<T> valueType).但是在Firebase 3.0之后我无法将以下数据解析到我的Java类,因为它包含一个我收到NULL的自定义类型实例.

注意:在Firebase 3.0之前,相同的逻辑工作正常.我想它是因为现在Firebase使用的是GSON而不是JACKSON.如果我错了,请纠正我

数据:

{ 
  "address" : "DHA karachi", 
  "addresstitle" : "DHA karachi", 
  "logoimage" : {
    "bucketname" : "test2pwow",
    "id" : "zubairgroup",
    "mediaType" : "image/png",
    "source" : 1,
    "url" : "https://pwowgroupimg.s3.amazonaws.com/zubairgroup1173.png?random=727" 
  },
  "title" : "zubairghori" 
}
Run Code Online (Sandbox Code Playgroud)

Group.java

public class Group {

    public String address;
    public String addresstitle;
    public LogoImage logoimage;

    public Group(){}

}
Run Code Online (Sandbox Code Playgroud)

LogoImage.java

public class LogoImage {

    public String bucketname;
    public String id;

    public LogoImage(){}

}
Run Code Online (Sandbox Code Playgroud)

代码如下:

Group group = datasnapshot.getValue(Group.class); 
Run Code Online (Sandbox Code Playgroud)

它不会将 …

android json firebase firebase-realtime-database

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

android中的Activity-scoped监听器是什么意思?

**从firebase的文档中删除**

Activity-scoped监听器的含义是什么?又是怎样从一个简单的addOnCompleteListener喜欢不同这个!

android firebase firebase-authentication firebase-realtime-database

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

如何在不使用实际 useEffect 钩子的情况下创建像 React 的 useEffect 钩子中那样的陈旧闭包?

我知道闭包是如何工作的,但我无法理解在没有详尽的依赖项数组的情况下如何在 React 中创建过时的闭包。useEffect为此,我尝试复制一个过时的闭包,就像在 React 中一样,useEffect而不使用useEffect,但我无法创建它。我的代码不会创建陈旧的闭包,而是在每个时间间隔记录正确的值。您能否看一下下面的代码片段并告诉我:

  1. 我究竟做错了什么?useEffect当我们不提供完整的依赖项数组时,我应该怎么做才能创建一个像 React 中那样的陈旧闭包?(参考代码在文末)

  2. 当我们没有在 useEffect 中提供详尽的依赖项时,为什么会创建一个过时的闭包?为什么钩子回调中的代码useEffect不像普通函数那样只使用词法范围并打印实际值?

function createIncrement(incBy) {
  let value = 0;

  function increment() {
    value += incBy;
    console.log(value);
  }
  
  function useEffect(fun) {
    fun()
  }
  
  useEffect(function() {
    setInterval(function log() {
          // what should I do to create a stale closure here?
          // So that if I change the value it should show me the old value
          // as it does when using …
Run Code Online (Sandbox Code Playgroud)

javascript closures reactjs react-hooks

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

Whatsapp,Facebook和Skype消息传递在后台如何工作?

我想问的是:

  1. 这些应用程序是依靠FCM / GCM(或任何其他类型的)推送通知来同步其数据,还是在后台通过服务使用套接字连接?
  2. 如果他们依靠推送通知,那么为什么他们在后台接收通知时没有任何损失,而我却在忙碌的时间中错过了10-15%的通知。
  3. 而且,如果他们依赖于后台的套接字连接,那么这不是像恐龙那样吃电池吗?

我发现,如果我强制停止Messenger和Facebook,我仍然会收到消息,但比平常晚一些。另外,在Messenger,Facebook,Slack和Skype中有一个“允许后台活动”选项,当我禁用它时,我根本不会收到任何通知。有趣的是,WhatsApp在其应用程序信息中没有此选项,如果我强制停止WhatsApp,它只会停止向我显示消息通知。

android websocket socket.io firebase-cloud-messaging

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