GDPU Andriod移动应用 Broadcast Receiver
聆听广播,跟着节拍吧。
计时器
新建一个名为PhoneStateMonitor的工程;
实现一个应用运行时长的计时器,并在界面上刷新计数器,要求包括:
(1)在Layout中包含两个TextView控件,横向分布,左边的TextView固定显示文本“运行时长”,右边的TextView显示计时时长(单位:分钟)
(2)通过静态方式注册系统广播android.intent.action.TIME_TICK,执行计时器的刷新。
注,本次可以不用重名原来自带的xml跟main活动,然后记得每题分模块写即可。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:padding="16dp"android:gravity="center_vertical"><!-- 左侧 TextView 显示 "运行时长" --><TextViewandroid:id="@+id/textViewLabel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="运行时长"android:textSize="20sp"android:layout_marginEnd="16dp"/><!-- 右侧 TextView 显示计时时长 --><TextViewandroid:id="@+id/textViewTimer"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="0"android:textSize="20sp"android:gravity="end"/></LinearLayout>
这里的Receiver内部类写在主活动里,当然你也可以另外写多一个Receiver文件。
package com.example.phonestatemonitorimport android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.widget.TextViewclass MainActivity : Activity() {// 定义广播接收器,接收系统时间更新广播private lateinit var timeTickReceiver: TimeTickReceiveroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取布局中的 TextView 控件val textViewTimer: TextView = findViewById(R.id.textViewTimer)// 创建 TimeTickReceiver 实例并传递 textViewTimertimeTickReceiver = TimeTickReceiver(textViewTimer)// 注册系统广播val intentFilter = IntentFilter()
// intentFilter.addAction("android.intent.action.TIME_TICK")intentFilter.addAction(Intent.ACTION_TIME_TICK)// 使用系统时间更新广播的正确 actionregisterReceiver(timeTickReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器,避免内存泄漏unregisterReceiver(timeTickReceiver)}// 广播接收器类class TimeTickReceiver(private val textViewTimer: TextView) : BroadcastReceiver() {private var totalMinutes: Int = 0override fun onReceive(context: Context, intent: Intent) {// 更新计时器updateTimer()}private fun updateTimer() {totalMinutes += 1val timeString = String.format("%02d分钟", totalMinutes)// 更新 TextView 显示的计时textViewTimer.text = timeString}}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.phonestatemonitor"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.T7"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
手机WIFI状态显示
实现手机WI-FI状态显示:
(1)WI-FI只有“打开”和“关闭”两种状态;
(2)Layout中根据自己的想法设计合理的WI-FI状态显示方式;
(3)注意,要在AndroiManifest.xml添加wifi状态的权限,
(4)设计一个广播接收器来监听广播android.net.wifi.WIFI_STATE_CHANGED
(5)创建一个私有方法wifiStateUpdate(),里面包括:
创建一个wifiManager:
val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
获取WI-FI的状态:
val wifiState = wifiManager.wifiState
如果wifiState为WifiManager.WIFI_STATE_ENABLED,则显示“打开”,如果为wifiState为WifiManager.WIFI_STATE_DISABLED,则显示“关闭”。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"android:elevation="4dp"android:theme="@style/ThemeOverlay.AppCompat.ActionBar" /><TextViewandroid:id="@+id/statusWifi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/status_wifi_open"android:layout_gravity="center"android:layout_marginTop="50dp"android:textSize="30sp"android:textColor="#EF9DB9" />
</LinearLayout>
在res的values文件下找到strings.xml
<resources><string name="app_name">T7</string><string name="status_wifi_open">Wifi已打开</string><string name="status_wifi_close">Wifi已关闭</string>
</resources>
在另一个模块或项目的模块,直接用默认的活动写即可。
import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.net.wifi.WifiManager
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.appcompat.widget.Toolbar
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {// 定义广播接收器,接收 Wi-Fi 状态更新广播private lateinit var wifiReceiver: WifiReceiver// 用于显示 Wi-Fi 状态的 TextView 控件private lateinit var wifiStatus: TextViewprivate lateinit var wifiManager: WifiManageroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
// val toolbar: Toolbar = findViewById(R.id.toolbar)
// setSupportActionBar(toolbar)// 获取布局中的 TextView 控件wifiStatus = findViewById(R.id.statusWifi)wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager// 创建 wifiReceiver 实例wifiReceiver = WifiReceiver(wifiStatus)// 注册 Wi-Fi 状态广播接收器val intentFilter = IntentFilter()intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION) // Wi-Fi 状态变化的广播registerReceiver(wifiReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器,避免内存泄漏unregisterReceiver(wifiReceiver)}// 广播接收器类,用于监听 Wi-Fi 状态变化class WifiReceiver(private val statusWifi: TextView) : BroadcastReceiver() {private lateinit var wifiManager: WifiManageroverride fun onReceive(context: Context?, intent: Intent?) {// 获取 WifiManager 实例wifiManager = context?.applicationContext?.getSystemService(Context.WIFI_SERVICE) as WifiManager// 更新 Wifi 状态wifiStateUpdate()}private fun wifiStateUpdate() {// 获取当前的 Wifi 状态val wifiState = wifiManager.wifiStateval context = statusWifi.context// 根据 Wifi 状态更新 UIif (wifiState == WifiManager.WIFI_STATE_ENABLED) {// Wifi 已开启statusWifi.text = context.getString(R.string.status_wifi_open)} else if (wifiState == WifiManager.WIFI_STATE_DISABLED) {// Wifi 已关闭statusWifi.text = context.getString(R.string.status_wifi_close)}statusWifi.invalidate()}}
}
AndroidManifest.xml,注意这里要改一下跟你的项目模块名对上,别直接复制还倒打一耙怪到这来。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.t7" ><!-- Wi-Fi 状态权限 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.T7" ><activityandroid:name=".MainActivity"android:exported="true" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
打开虚拟手机的设置找到wifi项把它打开关闭,也可以从上面拉下来开启,类似平时用手机打开wifi的,然后观察界面显示。
手机电池电量提醒
实现手机电池电量提醒
(1)要求能够按百分比显示电量;
(2)监听电量变化的广播
android.intent.action.BATTERY_LOW、android.intent.action.BATTERY_OKAY、android.intent.action.BATTERY_CHANGED三条信息;
(3)正常电量下,显示“正常电量”,同时计算并显示具体电量。
(4)当电量电量低于20%时,用红色字体显示电量,并且显示文本“请及时充电!”
(5)计算电量batteryPct。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="16dp"><!-- 第一个 TextView: 显示文本1 --><TextViewandroid:id="@+id/textViewText1"android:layout_width="wrap_content"android:layout_height="50sp"android:text="@string/text1"android:textSize="30sp"android:gravity="start"/><!-- 第二个 TextView: 显示电池百分比 --><TextViewandroid:id="@+id/textViewBattery"android:layout_width="wrap_content"android:layout_height="47sp"android:text="@string/battery_percentage"android:textSize="30sp"android:layout_toEndOf="@id/textViewText1"android:layout_marginStart="4dp"android:layout_marginTop="3sp"android:gravity="end" /><!-- 一个黑色横向 View --><Viewandroid:layout_width="match_parent"android:layout_height="2dp"android:layout_below="@id/textViewText1"android:layout_alignParentStart="true"android:background="@color/black" /><!-- 第三个 TextView: 显示电池提示信息 --><TextViewandroid:id="@+id/textViewTips"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/battery_normal_tips"android:textSize="40sp"android:gravity="center"android:layout_below="@id/textViewText1"android:layout_marginTop="20dp" /></RelativeLayout>
<resources><string name="app_name">Pct</string><string name="text1">手机电量:</string><string name="battery_percentage">100%</string><string name="battery_normal_tips">正常电量</string><string name="battery_charge_tips">请及时充电!</string>
</resources>
import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.os.BatteryManager
import android.widget.TextView
import android.widget.Toastclass MainActivity : Activity() {private lateinit var batteryLevel: TextViewprivate lateinit var batteryTips: TextViewprivate lateinit var batteryReceiver: BroadcastReceiveroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取布局中的 TextView 控件batteryLevel = findViewById(R.id.textViewBattery)batteryTips = findViewById(R.id.textViewTips)// 创建并注册广播接收器batteryReceiver = BatteryReceiver()val intentFilter = IntentFilter()intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) // 电池变化intentFilter.addAction(Intent.ACTION_BATTERY_LOW) // 电池低电量intentFilter.addAction(Intent.ACTION_BATTERY_OKAY) // 电池恢复正常registerReceiver(batteryReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器unregisterReceiver(batteryReceiver)}// 广播接收器类:处理电池变化的逻辑inner class BatteryReceiver : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {intent?.let {when (it.action) {Intent.ACTION_BATTERY_CHANGED -> {val batteryPct:Float? = getBatteryPercentage(it)// 更新电池百分比显示batteryPct?.let { pct ->updateBatteryStatus(pct)}}Intent.ACTION_BATTERY_LOW -> {// 电池电量过低时显示提示信息batteryTips.text = context?.getString(R.string.battery_charge_tips)batteryTips.setTextColor(context?.resources?.getColor(android.R.color.holo_red_dark) ?: 0)}Intent.ACTION_BATTERY_OKAY -> {// 电池恢复正常时显示提示信息batteryTips.text = context?.getString(R.string.battery_normal_tips)batteryTips.setTextColor(context?.resources?.getColor(android.R.color.black) ?: 0)}else -> {}}}}// 获取电池百分比private fun getBatteryPercentage(intent: Intent): Float {val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)return level * 100 / scale.toFloat()}// 更新电池状态private fun updateBatteryStatus(batteryPct: Float) {batteryLevel.text = "${batteryPct.toInt()}%" // 显示电池百分比if (batteryPct < 20) {batteryTips.text = "请及时充电!"batteryTips.setTextColor(getColor(android.R.color.holo_red_dark))} else {// 电量正常时,显示“正常电量”batteryTips.text = "正常电量"batteryTips.setTextColor(getColor(android.R.color.black))}}}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.pct"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.T7"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
怎么调节虚拟机的电量观察提示变化,点击这里。
然后滑动滑条即可观察到提示变化。
实验心得
写到困了,却等不到的赞。
相关文章:

GDPU Andriod移动应用 Broadcast Receiver
聆听广播,跟着节拍吧。 计时器 新建一个名为PhoneStateMonitor的工程; 实现一个应用运行时长的计时器,并在界面上刷新计数器,要求包括: (1)在Layout中包含两个TextView控件,横向分…...

CSP/信奥赛C++刷题训练:经典例题 - 栈(1):洛谷P3056 :[USACO12NOV] Clumsy Cows S
CSP/信奥赛C刷题训练:经典例题 - 栈(1):洛谷P3056 :[USACO12NOV] Clumsy Cows S 题目描述 Bessie the cow is trying to type a balanced string of parentheses into her new laptop, but she is sufficiently clums…...

WiFi一直获取不到IP地址是怎么回事?
在当今这个信息化时代,WiFi已成为我们日常生活中不可或缺的一部分。无论是家庭、办公室还是公共场所,WiFi都为我们提供了便捷的无线互联网接入。然而,有时我们可能会遇到WiFi连接后无法获取IP地址的问题,这不仅影响了我们的网络使…...
蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
iOS 写入数据超过200字节报错 文章目录 iOS 写入数据超过200字节报错官方建议:报错问题解决 writeblecharacteristicvalue 官方建议: 并行调用多次会存在写失败的可能性。APP不会对写入数据包大小做限制,但系统与蓝牙设备会限制蓝牙4.0单次…...

Ascend Extension for PyTorch是个what?
1 Ascend Extension for PyTorch Ascend Extension for PyTorch 插件是基于昇腾的深度学习适配框架,使昇腾NPU可以支持PyTorch框架,为PyTorch框架的使用者提供昇腾AI处理器的超强算力。 项目源码地址请参见Ascend/Pytorch。 昇腾为基于昇腾处理器和软…...
学习docker第五弹-----高级篇start-Dockerfile
docker目录 1 Dockerfile是什么2 Dockerfile能干嘛3 如何书写Dockerfile3.1 Dockerfile构建过程解析3.2 小总结3.3 Dockerfile的基本知识3.5 保留字FROMMAINTAINERRUN 有两种方式EXPOSEWORKDIRENVUSERVOLUMEADDCMDENTRYPOINT 4 后记 1 Dockerfile是什么 Dockerfile顾名思义就是…...
【Elasticsearch】Elasticsearch集成Spring Boot
Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data…...
HarmonyOS 移
什么是HarmonyOS HarmonyOS 中文名字是 鸿蒙操作系统 中国神话传说盘古在昆仑山开天辟地之前,世界是一团混沌状的元气,这种自然的元气叫做鸿蒙,那个时代成为鸿蒙时代华为公司的操作系统以鸿蒙取名,是不是有开天辟地之寓意&#x…...

跨子网的WinCC客户机/服务器如何实现通讯?
为了更有效地利用有限的IP地址,为了减少广播对网络带宽的占用从而提高带宽,为了实现在不同子网中应用不同的安全策略从而提高网络安全性,现场通常要求划分子网,将安全等级要求不同的计算机安置在不同的子网中,分开管理…...

java 面向对象高级
1.final关键字 class Demo{public static void main(String[] args) {final int[] anew int[]{1,2,3};// anew int[]{4,5,6}; 报错a[0]5;//可以,解释了final修饰引用性变量,变量存储的地址不能被改变,但地址所指向的对象的内容可以改变} }什…...
递推经典例题 - 爬楼梯
一、题目阅读 题目描述 一段楼梯有n级台阶。你每次可以跨一个、两个或者三个台阶。 请问走上n级台阶有几种方案?答案对998244353取模。 输入格式 一行一个数n。 输出格式 一行一个数,表示方案数。 样例 Input 1 3 Output 1 4 样例解释 1 1 1 3 1 2 …...

OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在反向投影图像上找到一个对象。 meanShift 是一种用于图像处理和计算机视觉领域的算法,特别适用于目标跟踪、图像分割等任务。该算…...

《数据治理精选案例集2.0(2024版)》592页PDF(已授权分享)
《亿信华辰数据治理精选案例集2.0》是北京亿信华辰软件有限责任公司倾力打造的专业数据治理案例集,汇集了100个一线政企数据治理实践案例,覆盖13大行业和500业务场景,通过深入剖析数据治理难题,提供了新思路和实战经验,…...

【51单片机】LED点阵屏 原理 + 使用
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 LED点阵屏显示原理74HC595 编码LED点阵屏显示笑脸LED点阵屏显示动画 LED点阵屏 点阵屏在开发板的右上角,注意使用前需要…...

Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

【案例】Excel使用宏来批量插入图片
一、场景介绍 我有一个excel文件,需要通过一列的文件名称,按照规则给批量上传图片附件。 原始文件: 成功后文件: 二、实现方法 1. 使用【wps】工具打开Excel文件,将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…...
报名开启|开放原子大赛“Rust数据结构与算法学习赛”
开放原子大赛“Rust数据结构与算法学习赛”报名进行中,报名截止时间为11月17日。 为了进一步促进开源技术的发展,提升国内开源社区的创新能力和国际影响力,开放原子开源基金会与清华大学开源操作系统训练营等单位,共同举办本次Rus…...

[翻译] 创始人模式(Founder Mode)
Founder Mode 上周在一次YC活动中,Brian Chesky发表了一场在场的每个人都难以忘怀的演讲。会后,我与大多数创始人交流时,他们都表示这是他们听过的最好的演讲。连Ron Conway也第一次忘记了记笔记。我不会试图在这里复述演讲内容,…...
拓扑排序(C++类封装+数组模拟队列和邻接表)
拓扑序列 对于任何无回路的AOV网,其顶点均可排成拓扑序列,并且其拓扑序列未必唯一。步骤如下: 1.从网中选择一个入度为0的顶点且输出。 2.从网中删除该顶点及其所有出边。 3.执行1,2,直至所有顶点已输出࿰…...
FP独立站引流革命:GG斗篷技术解锁流量新策略
在跨境电商领域,FP独立站的运营者们面临着一个共同的挑战:如何在遵守平台规则的同时,有效地吸引和保持流量。传统的引流方法如SEM、SEO、邮件推广和社交媒体营销,对于FP独立站来说,往往效果有限。但现在,一…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...