Kotlin android简单Activity跳转、handler和thread简单配合使用

kotlin是未来android开发的编程趋势,作为一条咸鱼,初学kotlin笔记

  1. 创建kotlin布局:(androidstudio3.0软件已经支持kotlin,3.0以下的需要安装kotlin插件,可自行百度安装)

这里写图片描述

2.初始化控件(非常方便,不需要findviewbyid,只需要直接使用地址引用,但是要确保地址的唯一性)

main_tv_hello.text = "nxm"

3.声明变量和初始化变量(需要到变量时可初始化,本处以初始化handler和thread为例子)

    //声明变量
    private lateinit var handler: Handler
    private lateinit var myThread: Thread

    //初始化变量
    fun initData() {
        //初始化myThread
        myThread = object : Thread() {
            override fun run() {
                super.run()
                handler.sendEmptyMessageDelayed(Constants.ZERO, 2000)
            }
        }
        //初始化handler
        handler = object : Handler() {
            override fun handleMessage(msg: Message?) {
                super.handleMessage(msg)
                if (msg?.what == Constants.ZERO) {
                    var intent = Intent()
                    intent.setClass(this@Wellcome, MainActivity::class.java)
                    startActivity(intent)
                }
            }
        }
    }

4.0上面handler重写了handleMessage方法,里面有个跳转界面的方法(木子在查找了很多网上的this引用大多是说Wellcome@this,结果是错的正确写法是this@Wellcome)

//Intent页面跳转
 var intent = Intent()
                    intent.setClass(this@Wellcome, MainActivity::class.java)
                    startActivity(intent) 

5.0然后就是重写thread里面的run方法了

         myThread = object : Thread() {
            override fun run() {
                super.run()
                handler.sendEmptyMessageDelayed(Constants.ZERO, 2000)
            }

6.0做一下Activity生命周期判断即可

  override fun onResume() {
        super.onResume()
        if (!myThread.isAlive)
            myThread.start()
    }

    override fun onStop() {
        super.onStop()
        //判断线程是否仍活着
        if (myThread.isAlive) {
            myThread.interrupt()
        }
    }

即实现kotlin android界面Activity之间的跳转(子线程延迟两秒跳转:其实可以不用在子线程中,为了学习而加进去的)

完整代码

package com.nxm.muzi102.activity

import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Message
import com.nxm.muzi102.R
import com.nxm.muzi102.comment.Constants


class Wellcome : BaseActivity() {
    //声明变量
    private lateinit var handler: Handler
    private lateinit var myThread: Thread

    override fun getContentView(): Int {
        return R.layout.activity_wellcome
    }

    override fun onViewsDidLoad(savedInstanceState: Bundle?) {
        initData()
    }

    fun initData() {
        //初始化myThread
        myThread = object : Thread() {
            override fun run() {
                super.run()
                handler.sendEmptyMessageDelayed(Constants.ZERO, 2000)
            }
        }
        //初始化handler
        handler = object : Handler() {
            override fun handleMessage(msg: Message?) {
                super.handleMessage(msg)
                if (msg?.what == Constants.ZERO) {
                    var intent = Intent()
                    intent.setClass(this@Wellcome, MainActivity::class.java)
                    startActivity(intent)
                }
            }
        }
    }

    override fun onResume() {
        super.onResume()
        if (!myThread.isAlive)
            myThread.start()
    }

    override fun onStop() {
        super.onStop()
        //判断线程是否仍活着
        if (myThread.isAlive) {
            myThread.interrupt()
        }
    }
}

跳转到的页面代码

package com.nxm.muzi102.activity

import android.os.Bundle
import com.nxm.muzi102.R
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : BaseActivity() {
    override fun getContentView(): Int {
        return R.layout.activity_main
    }


    override fun onViewsDidLoad(savedInstanceState: Bundle?) {
        main_tv_hello.text = "nxm"
    }
}

跳转到的页面布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.nxm.muzi102.activity.MainActivity">

    <TextView
        android:id="@+id/main_tv_hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
发布了43 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_38355313/article/details/78947196