Android学习笔记

被通知学习kotlin做一个Android小项目

准备

第一步 学习《第一行代码–Android》+《kotlin从零到精通》

看的领导买的书,没钱买书的同学可以私聊我要电子版
学习路线
第一章+第二章+第三章+第九章

第二步 确认需求
第三步 百度websocket相关知识

开始

  1. 导入依赖
implementation "org.jetbrains.anko:anko-common:$anko_version"
implementation "org.java-websocket:Java-WebSocket:1.3.6"
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
testImplementation 'junit:junit:4.12'
implementation 'com.google.code.gson:gson:2.8.2'
  1. 布局
  2. 编写控制器
    查阅很多资料,貌似这个框架自带心跳帧,能够保活。但是断后重新连接需要自己去写。
private fun webSocketConnect() {
        Thread(Runnable {
            var url = "ws://echo.websocket.org"
            var listener: ClientWebSocketListener = ClientWebSocketListener()
            var client = OkHttpClient.Builder().
                    readTimeout(3, TimeUnit.SECONDS)//设置读取超时时间
                    .writeTimeout(3, TimeUnit.SECONDS)//设置写的超时时间
                    .connectTimeout(3, TimeUnit.SECONDS)//设置连接超时时间
                    .pingInterval(10, TimeUnit.SECONDS)  //设置心跳帧发送时间
                    .build()
            val request = Request.Builder()
                    .url(url)
                    .build()
            client.newWebSocket(request, listener)
            client.dispatcher().executorService().shutdown()
        }).start()
    }
	//根据需求重写
    public inner class ClientWebSocketListener : WebSocketListener() {
        // 连接时发送消息,后续发消息可以用WebSocket.send()方法
        override fun onOpen(webSocket: WebSocket?, response: Response?) {
        }

        override fun onFailure(webSocket: WebSocket?, t: Throwable?, response: Response?) {
        }

        override fun onClosing(webSocket: WebSocket?, code: Int, reason: String?) {
        }

		// 接收消息
        override fun onMessage(webSocket: WebSocket?, text: String?) {
        }

        override fun onMessage(webSocket: WebSocket?, bytes: ByteString?) {
        }

        override fun onClosed(webSocket: WebSocket?, code: Int, reason: String?) {
        }
    }

一些边角料

  • 全屏显示去掉标题栏
//去掉顶部标题
        getSupportActionBar()?.hide();
        //去掉最上面时间、电量等
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
                , WindowManager.LayoutParams.FLAG_FULLSCREEN)
  • Gson转Map
Gson().fromJson(text, Map::class.java)
  • 改变UI
runOnUiThread{}
  • 设置app开机代替主屏幕自启动
    AndroidManifest.xml添加
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值