JackieMa's Blog

Come On!


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Search

Kotlin 查漏补缺

Posted on 2020-09-02 | In Kotlin | Visitors:

本文收集各处看到的 kotlin 小技巧及实用点.

Read more »

Kotlin Github项目代码中的总结

Posted on 2020-08-20 | In Kotlin | Visitors:

本文列举部分 Kotlin Github 项目中代码的实际使用等.

Read more »

Kotlin 协程

Posted on 2020-07-22 | In Kotlin | Visitors:

此文是协程相关的blog\文章\demo, 做总结或简化, 或使用心得等等, 统一放在这里, 方便查找及总结.

Read more »

Android下实现局域网设备发现与通信

Posted on 2020-06-03 | In Android | Visitors:

概述

在使用Android开发智能设备时,一般会分为用于遥控与管理的Host端,和用于执行个性功能的Slave端,二者可以借助网络或蓝牙等途径实现通信。

协议:计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议。

本文介绍的就是网络通信。(类似应用商城里的 电视超人 app)

Read more »

《大话设计模式》之总结

Posted on 2020-05-20 | In 设计模式 | Visitors:
  1. 对象: 用一组可识别的特性和行为来标识的实体;
    类: 具有享用属性和功能的对象的抽象的集合;
    属性: 一个方法或一对方法,有 get()\set()调用;
    字段: 与类相关的变量, 通常是私有的;
  2. 封装:
    每个对象都包含它能进行操作所需要的所有信息.
    一般无需对外界公开的方法都应该设置成 private, 这才有利于"封装".
    优点:
        - 减少耦合
        - 类内部的实现可以自由地修改
        - 类具有清晰的对外接口
    PS: 房子, 门
    
  3. 继承:
    - 子类拥有父类非 private 的属性和功能
    - 子类具有自己的属性和功能, 即子类可以扩展父类没有的属性和功能
    - 子类可以重写父类的方法
    构造方法不能被继承,只能被调用.
    优点: - 使得所有子类公共的部分都放在了父类, 使得代码得到了共享, 避免重复
          - 可使得修改或扩展继承而来的实现都比较容易
    缺点: - 父类变, 则子类不得不变
          - 会破坏包装, 父类实现细节暴露给子类
    使用场景: 两个类之间是 "is-a" 的关系
    PS: 动物 - 猫\狗
    
  4. 多态:
    注意:
        - 子类以父类的身份出现
        - 子类在工作时以自己的方式来实现
        - 子类以父亲的身份出现时, 子类特有的属性和方法不可以使用
        PS: 京剧, 儿子替生病的父亲上台唱戏
    使用: 为了使子类的实例完全解体来自父类的类成员, 父类需要将该成员声明称抽象的.
    实现: 对象的声明必须是父类, 而不是子类, 实例化的对象是子类, 这才能实现多态.
    原理: 当方法被调用时, 无论对象是否被转换为其父类, 都只有位于对象继承链最末端的方法实现才会被调用.也就是说, 抽象方法是按照其运行时类型而非编译时类型进行动态绑定调用的.
    
Read more »

《第一行代码》(第三版) 之 Kotlin 的总结

Posted on 2020-05-20 | In Kotlin | Visitors:
  1. 循环: .. 是左闭右闭
    downTo 是左闭右闭
    until  是左闭右开
    
  2. 类:任何一个非抽象类默认都是不可以被继承的。
  3. 构造函数:子类的主构造函数调用父类中的哪个构造函数,在继承的时候通过括号来指定。
    子类在主构造函数中声明成 val 或 var 的参数将自动成为该类的字段,就会与父类同名的字段冲突。因此,同名的参数前面我们不用加任何关键字,让它的作用域仅限定在主构造函数当中。
    子类没有主构造函数只有次构造函数时,继承父类就不需要加括号了。
    
  4. 接口:Kotlin 中允许对接口的定义的函数进行默认实现(JDK 1.8 后也支持)。

  5. 函数的可见性修饰符:

    • Java: public、private、protected、default
    • Kotlin: publi、private、protected、internal
    • Java 中默认是 default
    • Kotlin 中默认是 public

      修饰符 | Java | Kotlin
      -|-|-
      public | 所有类可见 | 所有类可见 |
      private | 当前类可见 | 当前类可见 |
      protected | 当前类、子类、同一包路径下的类可见 | 当前类、子类可见 |
      default | 同一包路径下的类可见 | 无 |
      internal | 无 | 同一模块中的类可见 |

Read more »

Android Daily Interview

Posted on 2019-11-06 | In Android | Visitors:

以下内容参考 Android Daily Interview
小聚成河,大聚成江,坚持下来的都是时代的铸就者,共勉之!

Read more »

Dagger2 超全使用攻略

Posted on 2019-10-09 | In Android | Visitors:

在 Gradle 中的使用

1
2
3
4
implementation 'com.google.dagger:dagger:2.4'
annotationProcessor 'com.google.dagger:dagger-compiler:2.4'
//java注解
implementation 'org.glassfish:javax.annotation:10.0-b28'

基本使用

1
2
3
4
5
6
7
8
9
10
public class MainPresenter implements IPresenter {

IView view;

// 被注入对象的构造函数中添加 @Inject (方式2)
@Inject
public MainPresenter(IView view) {
this.view = view;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Module
@Module
public class MainModule {

private IView view;

public MainModule(IView view) {
this.view = view;
}

// 在 Module 中提供被注入的对象(或构建该对象所需的参数) (方式1(优先))
// 需要添加 @Provides 注解, 方法名为 provideXXX()
@Provides
IView provide() {
return view;
}
}
1
2
3
4
5
// 注入器, 被注入的对象(MainPresenter)和注入的类(MainActivity)的桥梁
@Component(modules = MainModule.class)
public interface MainComponent {
void inject(MainActivity activity);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MainActivity extends AppCompatActivity implements IView{

// 使用 @Inject 注入 MainPresenter 对象
@Inject
MainPresenter presenter;

@Override
protected void onCreate(Bundle savedInstanceState) {
// -> Make Project 生成相应的注解类
DaggerMainComponent.builder().mainModule(new MainModule(this)).build()
.inject(this);

presenter.getData();
}
}
Read more »

android 无线调试

Posted on 2019-10-08 | In 工具 | Visitors:

使用 Android Wifi ADB 插件

Android Wifi ADB

  1. 安装以上插件,并重启 AS
  2. 将手机连接至电脑,并确保电脑和手机在同一个网络下
  3. 打开命令行,输入 adb tcpip 5555

然后就可以进行远程调试了.

android 源码下载及编译

Posted on 2019-03-24 | In Android | Visitors:

Android 源码下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# 如果上述 URL 不可访问,可以用下面的:
# curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

# 初始化仓库:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
# 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
# REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

# 如果需要某个特定的 Android 版本(Android 版本列表):
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1

# 同步源码树(以后只需执行这条命令来同步):
repo sync

Android 源码编译

自己动手编译Android源码(超详细)

12…4

Jackie Ma

小小, 小码农梦很美

35 posts
10 categories
52 tags
RSS
github
© 2020 Jackie Ma
Powered by Hexo
|
Theme — NexT.Mist v5.1.4