Android Java开发学习心得
引言
在学习Android Java开发的过程中,我深入了解了如何利用Java编程语言构建功能丰富的移动应用程序。通过学习Android的核心概念和使用相关的工具和库,我逐渐掌握了Android开发的基本技能。
学习Android开发的动机
我对移动应用开发产生浓厚的兴趣,Android作为当今最流行的移动操作系统之一,成为了我的首选学习目标。我相信通过学习Android开发,我可以为用户提供有用且便捷的应用程序,并且能够深入了解移动应用的设计与实现。
学习资源的选择
在开始学习Android开发之前,我花了一些时间寻找适合的学习资源。我发现谷歌官方提供了丰富的学习材料,包括开发者文档、示例代码和在线课程。这些资源提供了系统化的学习路径,帮助我逐步掌握Android开发的技能。
学习Android的核心概念
在学习过程中,我首先了解了Android的核心概念。活动(Activity)、布局(Layout)、片段(Fragment)、意图(Intent)和视图(View)等概念成为我理解和构建Android应用程序的基础。我学会了如何创建交互式的用户界面,处理用户输入,以及利用系统服务进行各种功能操作。
使用Android开发工具和库
Android软件开发工具包(SDK)提供了丰富的工具和库,用于加速开发过程。我学会了使用Android Studio这一集成开发环境(IDE)来创建、编译和调试应用程序。我还学习了如何使用Android SDK中提供的各种库,例如UI设计库、网络通信库和数据库操作库,以便更高效地开发应用程序。
实践项目经验
除了学习理论知识,我还通过实践项目来加深对Android开发的理解。我参与了一些小型项目,例如一个简单的记账本程序。
1.网络请求
该程序使用的数据库为云端的MySQL数据库
通过一个数据库工具类连接到云端数据库
public class DBOpenHelper {
private static final String diver = "com.mysql.jdbc.Driver";
//加入utf-8是为了后面往表中输入中文,表中不会出现乱码的情况
private static final String url = "jdbc:mysql://xxxx/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开发在进行网络请求的时候都需要在子线程进行请求,否则会出现无法连接的情况
而进行网络请求就要开起网络权限,需要在AndroidManifest.xml文件中添加以下语句来得到网络请求权限
<uses-permission android:name="android.permission.INTERNET" />
下面为一个查询数据的例子
public void selectData(){
String sql = "select * from record where username = ?;";
new Thread(new Runnable() {
@Override
public void run() {
try {
Connection connection = DBOpenHelper.getConn();
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,username);
ResultSet resultSet = preparedStatement.executeQuery();
if (listData.size()!=0){
listData.clear();
}
while (resultSet.next()){
Map<String,String> data = new HashMap<>();
data.put("id",resultSet.getInt("id")+"");
data.put("date",resultSet.getDate("date").toString());
data.put("type",resultSet.getString("type"));
data.put("money",resultSet.getDouble("money")+"");
data.put("state",resultSet.getString("state"));
System.out.println(data.toString());
listData.add(data);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
createAdapter();
}
});
}catch (SQLException e){
e.printStackTrace();
}
}
}).start();
}
文件读写
该项目在登陆页面还有一个记住密码和自动登录功能
通过使用SharedPreferences的形式将数据存储为Xml形式,而后在打开程序的时候会去读取这个xml文件查看是否保存有用户名密码等数据,有则直接渲染到页面,是否自动登录则保存为boolean类型的数据,如果为true则程序自动跳转到个人中心页面。
下面是SharedPreferences文件的写入操作
runOnUiThread(new Runnable() {
@Override
public void run() {
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();
}
Intent intent = new Intent(MainActivity.this,PersonalActivity.class);
intent.putExtra("username",userName.getText().toString());
startActivity(intent);
}
});
值得注意的是这是在数据库查询到用户信息并且校验密码正确之后进行的操作
所以当前处于数据库查询的子线程中,要实现页面跳转和对页面进行操作就要回到主线程操作才能够实现,所以我将文件的写操作写在了runOnUiTherad中。
以下为SharedPreferences的“写”操作
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文件存储格式是以Key-Value的格式进行存储的
getString,getBoolean方法中第一个参数为要读取的数据的Key,第二个参数则是当找不到该key的时候返回的默认值。
持续学习和更新
Android开发是一个不断演进的领域,新的技术和工具不断涌现。因此,我意识到学习Android开发是一个持续的过程。我会继续关注最新的开发趋势和技术动态,参与社区讨论和开发者活动,以保持对Android开发领域的敏锐性和更新意识。
总结
学习Android Java开发是一项富有挑战性但又充满乐趣的过程。通过系统的学习和实践项目的经验,我逐渐掌握了Android开发的基本技能,并且能够构建功能丰富的移动应用程序。我相信这门课程将对我的职业发展产生积极的影响,并且我对继续深入学习和探索Android开发的未来充满期待。