udacity android 实践笔记: lesson 4 part a

2024-04-11 14:58

本文主要是介绍udacity android 实践笔记: lesson 4 part a,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

udacity android 实践笔记: lesson 4 part a


作者:干货店打杂的 /titer1 /Archimedes
出处:https://code.csdn.net/titer1
联系:1307316一九六八(短信最佳)
声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。
tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/android/


序言

this is weekend time
last time ,we have learn form the video
and now ,we are run the code directly.
let us go.thanks jackson
版本变化的
rs232 uart txd rxd clk 115200 10k
usb at least 5 ,传输类型1.0 fullspeded <10M2.0 highspeedd, 30M? 720p 20fpsprinter more high than uvcusb mass storage ..dirver-inside3.0 >100Mi2c2 line .clk data400k bps,命令
是否是 fake data,看看 数据里面 有没有 traped in weather station,就知道当前情况了

其他 四大组件

service
broad
content provider
activity

4.01 life cycle



以上介绍了 声明周期

!! 动手笔记 生命周期

看activity的生命周期,就是
看 mainActivity的logcat,非常清楚

操作布凑

进入mainActivity –> detail Activity –>回到 mainActivity

还有 Main Activity –> seting –>切回

为什么能够看到如上的提示,根本原因是有代码logcat,
所有的activity life cycle hanlders

overviw 图


- contract
- db builder
- content provider 四大组件之一

4.02 第四章最基础的代码框架


- 完整的测试框架
- 添加了 location weather的contract
- 添加了 location weather相关的 sql builder

4.03 定义 数据库表项 for location

contract解释

/*** Defines table and column names for the weather database.*/

就是定义 表格内容

这里的更新就是 增加了
location table 的列内容定义

4.04 完善 location database

- 目标 测试 weather 数据库 创建 /插入

在数据库初始化代码处,
也就是 weatherDbHelper的位置,
仿照 weather database的创建,
添加以下代码

public class WeatherDbHelper extends SQLiteOpenHelper {static final String DATABASE_NAME = "weather.db";@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {final String SQL_CREATE_LOCATION_TABLE = "CREATE TABLE " + LocationEntry.TABLE_NAME + " (" +LocationEntry._ID + " INTEGER PRIMARY KEY," +LocationEntry.COLUMN_LOCATION_SETTING + " TEXT UNIQUE NOT NULL, " +LocationEntry.COLUMN_CITY_NAME + " TEXT NOT NULL, " +LocationEntry.COLUMN_COORD_LAT + " REAL NOT NULL, " +LocationEntry.COLUMN_COORD_LONG + " REAL NOT NULL " +" );";
...sqLiteDatabase.execSQL(SQL_CREATE_LOCATION_TABLE);//新添加的sqLiteDatabase.execSQL(SQL_CREATE_WEATHER_TABLE);

使能数据库创建测试程序 testCreateDb

程序介绍

        Students: Uncomment this test once you've written the code to create the Locationtable.  Note that you will have to have chosen the same column names that I did in my solution for this test to compile, so if you haven't yet done that, this isa good time to change your column names to match mine.Note that this only tests that the Location table has the correct columns, since wegive you the code for the weather table.  This test does not look at the

使能 test utilites

/*Students: You can uncomment this helper function once you have finished creating theLocationEntry part of the WeatherContract.*/static ContentValues createNorthPoleLocationValues() {// Create a new map of values, where column names are the keysContentValues testValues = new ContentValues();testValues.put(WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING, TEST_LOCATION);testValues.put(WeatherContract.LocationEntry.COLUMN_CITY_NAME, "North Pole");testValues.put(WeatherContract.LocationEntry.COLUMN_COORD_LAT, 64.7488);testValues.put(WeatherContract.LocationEntry.COLUMN_COORD_LONG, -147.353);return testValues;}/*Students: You can uncomment this function once you have finished creating theLocationEntry part of the WeatherContract as well as the WeatherDbHelper.*/static long insertNorthPoleLocationValues(Context context) {// insert our test records into the databaseWeatherDbHelper dbHelper = new WeatherDbHelper(context);//我的认识,这里会创建一个表SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues testValues = TestUtilities.createNorthPoleLocationValues();long locationRowId;locationRowId = db.insert(WeatherContract.LocationEntry.TABLE_NAME, null, testValues);
//这里将测试表的插入// Verify we got a row back.assertTrue("Error: Failure to insert North Pole Location Values", locationRowId != -1);return locationRowId;}

上面三处文件更新

4.05 test Location Table

这里 近一处 更新

可以从 注释里面进一步完善本小节内容

下面小节的内容将会被充实代码

/*Students:  Here is where you will build code to test that we can insert and query the location database. We've done a lot of work for you.  You'll want to look in TestUtilitiewhere you can uncomment out the "createNorthPoleLocationValues" function.  You can also make use of the ValidateCurrentRecord function from within TestUtilities.*/public void testLocationTable() {// First step: Get reference to writable database// Create ContentValues of what you want to insert// (you can use the createNorthPoleLocationValues if you wish)// Insert ContentValues into database and get a row ID back// Query the database and receive a Cursor back// Move the cursor to a valid database row// Validate data in resulting Cursor with the original ContentValues// (you can use the validateCurrentRecord function in TestUtilities to validate the// query if you like)// Finally, close the cursor and database}```### 6步 测试table(insert/quiery ...)
所有更新的代码在此
``` javapublic void testLocationTable() {// First step: Get reference to writable database// If there's an error in those massive SQL table creation Strings,// errors will be thrown here when you try to get a writable database.WeatherDbHelper dbHelper = new WeatherDbHelper(mContext);SQLiteDatabase db = dbHelper.getWritableDatabase();// Second Step: Create ContentValues of what you want to insert// (you can use the createNorthPoleLocationValues if you wish)ContentValues testValues = TestUtilities.createNorthPoleLocationValues();// Third Step: Insert ContentValues into database and get a row ID backlong locationRowId;locationRowId = db.insert(WeatherContract.LocationEntry.TABLE_NAME, null, testValues);// Verify we got a row back.assertTrue(locationRowId != -1);// Data's inserted.  IN THEORY.  Now pull some out to stare at it and verify it made// the round trip.// Fourth Step: Query the database and receive a Cursor back// A cursor is your primary interface to the query results.Cursor cursor = db.query(WeatherContract.LocationEntry.TABLE_NAME,  // Table to Querynull, // all columnsnull, // Columns for the "where" clausenull, // Values for the "where" clausenull, // columns to group bynull, // columns to filter by row groupsnull // sort order);// Move the cursor to a valid database row and check to see if we got any records back// from the queryassertTrue( "Error: No Records returned from location query", cursor.moveToFirst() );// Fifth Step: Validate data in resulting Cursor with the original ContentValues// (you can use the validateCurrentRecord function in TestUtilities to validate the// query if you like)TestUtilities.validateCurrentRecord("Error: Location Query Validation Failed",cursor, testValues);// Move the cursor to demonstrate that there is only one record in the databaseassertFalse( "Error: More than one record returned from location query",cursor.moveToNext() );// Sixth Step: Close Cursor and Databasecursor.close();db.close();}<div class="se-preview-section-delimiter"></div>

!! todo 效果截图

这处 等待网络 联通后,应该有 具体的效果图展示,
初步看到这里有若干的assert

//运行方法:lesson 4a 28 - SQLiteOpenHelper and Sunshine Database.mp4中

我把 问题的环境 运行方法 已经 整理,待后期更新

4.06 test weather table

和上面一样,修改的只有 testDb.java

编辑器里面 有 主题切换,可以后界面颜色 ,字体,保护眼睛,你懂的<div class="se-preview-section-delimiter"></div>
  • 不仅仅像上面 重新 写了一个 test*****talbe的函数,
  • 在testWeatherTalbe程序中,先调用了 testLoactionTalbe的代码,
    该代码被封装起来为insertLocation,其实内容就是 testLocationTable

  • 函数的返回值是 对应项目 query后的rowid 。

两者衔接的代码如下,

        long locationRowId = insertLocation();// Second Step (Weather): Create weather valuesContentValues weatherValues = TestUtilities.createWeatherValues(locationRowId);//*.insert//*.query<div class="se-preview-section-delimiter"></div>
至于是否起到 外键的作用,待证明

小憩时间

至此,逻辑正确的话,两个数据表格都测到测试
未来目标是 4.24..还有很多。

- 给出初步的 创建 weather表的表框架
- 创建 location 表
- 填充 test location
- 填充 test weather location (insert query …,调用了 testlocation的结果)

一句话 ,期中 4.06是一个 小的 里程碑

这篇关于udacity android 实践笔记: lesson 4 part a的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894402

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个