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

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机