学习内容和核心概念
在Android开发课程中,我学习了许多核心概念和技术,包括:
- Android应用的生命周期:了解了应用的启动、运行和销毁过程,掌握了如何管理和处理应用的生命周期事件。
- 布局和控件:学习了XML布局文件的编写和使用,掌握了常用布局和控件的创建和操作方法。
- 数据存储和数据库:学习了Android中数据存储的各种方式,包括Shared Preferences、文件存储和SQLite数据库,了解了它们的使用场景和操作方法。
- 网络通信和Web服务:掌握了Android中的网络通信技术,包括HTTP请求、JSON
开发工具库和第三方库
在Android开发中,使用开发工具库和第三方库可以大大提高开发效率和功能实现。我在课程中接触了许多常用的开发工具库和第三方库,如:
- Android Jetpack:包括LiveData、ViewModel、Room等组件,提供了更方便的开发模式和数据管理工具。
- Retrofit:用于简化网络请求的库,支持各种HTTP请求和数据解析方式,使网络通信更加便捷。
- Glide:用于加载和显示图片的库,具有高效的缓存机制和灵活的图片加载功能。
- ButterKnife:简化了Android视图绑定的库,减少了代码量和编写的工作。
- EventBus:用于实现事件总线的库,简化了组件之间的通信和数据传递过程。
这些开发工具库和第三方库的使用大大提高了我的开发效率,并使我的应用具备了更丰富和优化的功能。
实践项目
在课程中,我还参与一个简单的实践项目——记账本程序。
我负责的是记账本小程序中的登陆页面
首先该项目使用数据库为Mysql文件,选这个数据库是因为能够在开发的时候各个开发人员之间都能够实现数据统一。并且能支持用户在不同的设备只要登录自己的账号就能够看到自己的账本数据,而且减少用户本地的空间占用。
要进行Mysql数据库连接首先就要开启网络权限
需要开启网络权限就要在AndroidManifest.xml文件中添加下列代码
<uses-permission android:name="android.permission.INTERNET" />
连接数据库我们项目使用的是一个工具类进行数据库连接
public class DBOpenHelper {
private static final String diver = "com.mysql.jdbc.Driver";
//加入utf-8是为了后面往表中输入中文,表中不会出现乱码的情况
private static final String url = "jdbc:mysql://xxx:21721/book?characterEncoding=utf-8";
private static final String user = "xxx";//用户名
private static final String password = "xxx";//密码
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(diver);
conn = (Connection) DriverManager.getConnection(url,user,password);//获取连接
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
}
在需要获取数据库的时候就直接调用这个工具类就能够连接到数据库
Connection connection = DBOpenHelper.getConn();
需要特别注意的是Android开发中进行网络请求时都需要在子线程中进行请求,不能够在主线程进行网络请求操作。
登录有一个记住密码和自动登录的功能
我是通过Android中的SharedPreferences进行数据存储
将用户名密码和是否自动登录通过Key-Value的格式存储进Xml文件中
if (rmPsw.isChecked()){
SharedPreferences.Editor edit = mSharedPreferences.edit();
edit.putString("userName",userName.getText().toString());
edit.putString("password",password.getText().toString());
edit.commit();
}
if (autoLogin.isChecked()){
SharedPreferences.Editor edit = mSharedPreferences.edit();
edit.putBoolean("autoLogin",true);
edit.commit();
}
这是SharedPreferences的“写入”操作,在数据库查询用户输入的用户名密码都无误之后就会进行判断,判断用户是否勾选了记住密码和自动登录按钮,然后再进行相应的操作。
而在每次用户开启程序的时候登录页面都会读取相应的xml文件,查看是否储存有用户名和密码的数据,和是否自动登录。
if (mSharedPreferences.getString("userName",null)!=null){
userName.setText(mSharedPreferences.getString("userName",null));
password.setText(mSharedPreferences.getString("password",null));
rmPsw.setChecked(true);
}
if (mSharedPreferences.getBoolean("autoLogin",false)){
autoLogin.setChecked(mSharedPreferences.getBoolean("autoLogin",false));
Intent intent = new Intent(MainActivity.this, PersonalActivity.class);
intent.putExtra("username",mSharedPreferences.getString("userName",""));
startActivity(intent);
}
以上为SharedPreferences的读取操作。其中getString和getBoolean方法的参数分别为Key和读取不到该Key时返回的默认值。