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

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更