首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 四大组件学习之BroadcastReceiver一

    本节课学习四大组件最后一个, 广播接受者。 顾名思义广播接受者就是接受广播呗。比如在现实社会中,以前每个人家都有一台收音机,这可就可以去接受广播发出来的消息。大家都知道,程序世界也是参照的显示生活设计出来的,那在Android系统中也引入了广播这个概念。那在Android系统中广播有什么作用呢? 举个例子:比如你正在玩游戏或者看视频突然手机电量过低,这时候就会弹出一个框,提醒您手机电量过低,请充电的提示。其实电量改变就是一种广播类型,当电量过低时,系统就会发生一条广播,这时候正在运行的程序就会收到,同时给用户提醒。在Android系统中广播有很多类型。比如: 开机,关机, 打电话, 发短信,屏幕解锁等。

    02

    go的函数使用

    package main import( "fmt" ) /* 定义函数 */ type Circle struct { radius float64 } func main(){ //Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下:func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/} var c1 Circle c1.radius = 10.00 fmt.Println("Area of Circle(c1) = ", c1.getArea()) fmt.Println("---------------") //闭包和普通函数的区别 tmp := []int{1,2,3} for _,i := range tmp { fmt.Println(i) test(i) } fmt.Println("---------------") for _,i := range tmp { fmt.Println(i) //defer延迟关闭改资源,以免引起内存泄漏,defer的执行顺序是逆序的,也就是先进后出的顺序,defer类似析构函数,在函数或者类的最后关闭进行执行。 defer test(i) } //此打印结果和上面最好分开打印,不然看不出结果 fmt.Println("---------------") for _,i := range tmp { fmt.Println(i) //闭包里的非传递参数外部变量值是传引用的,在闭包函数里那个i就是外部非闭包函数自己的参数,所以是相当于引用了外部的变量, i 的值执行到第三次是3 ,闭包是地址引用所以打印了3次i地址指向的值,所以是3,3,3 defer func() { fmt.Println(i) }() } } //普通函数 func test(i int){ fmt.Println(i) } //该 method 属于 Circle 类型对象中的方法,计算圆的面子 func (c Circle) getArea() float64 { // func + 主函数 + 函数名(参数) + 返回值类型定义 { 函数内容 } //c.radius 即为 Circle 类型对象中的属性 return 3.14 * c.radius * c.radius }

    03

    Android 四大组件学习之BroadcastReceiver四

    我们前面几节不是说了,当广播接受者一旦注册到系统中,当系统发送的广播和你注册的广播的action匹配时,系统就会启动广播接收者所在的进程。除非用户手动停止广播接收者所在的进程。但是生活中有这样一种情况,比如说:我在玩网络游戏,假设说游戏本身在系统电量低的情况下,会自动保存当前游戏的进度,也就是存档的。可以这么说,此广播接受者只有在用户玩游戏时才需要启动,别的时候用户是不需要的。如果此广播接收者一直常驻于系统,那不是很浪费系统资源。所以我们就需要动态的启动广播接收者,和停止广播接收者。可是大家知道,广播接收者只要在清单文件中注册过了的,就会永远启动的。所以唯一的办法就是不在清单文件中注册,在代码中动态注册。

    01
    领券