这次会把所有之前学过的东西应用在一起,写一个登入的功能。
1. Activity调用CONFIG,获得URL后
2. Activity再调用Okhttp,从服务器返回JSON
3. Activity调用GsonTools,把JSON转换成<List>DTO
4. Activity调用DAO的get、set方法,把叁数<List>DTO传到方法
5. DAO继承DbHelper,把<List>DTO储存到Sqlite
以下是部份代码的精要
1. Activity初始化GsonTools、OkHttp、DAO。
private OkHttp okhttp; private GsonTools gsonTools; private BitMap bitMap; private UserDAO userDAO; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_login); okhttp = OkHttp.getInstance(); gsonTools = GsonTools.getInstance(); bitMap = BitMap.getInstance(); userDAO = new UserDAO(this); initUI(); isHavingUserInSqlite(); }
2. 必须在新线程下调用Okhttp,而在该线程下想刷新UI,必须用runOnUiThread()。
// Network thread new Thread(new Runnable() { @Override public void run() { // run your code here // UI Thread LoginActivity.this.runOnUiThread(new Runnable() { public void run() { // ui } }); } }).start();
3. 最核心的业务都在这里。
private void validUser() { // Network thread new Thread(new Runnable() { @Override public void run() { ResultDTO resultDTO; // check weather user is exist? userExistURL = Configuration.isUserExistURL(userName, userPassword); userExistResult = okhttp.getResponse(userExistURL); resultDTO = gsonTools.getLogin(userExistResult); // get user info if user is exist if ( resultDTO.getResult().equals("1") ) { userGetURL = Configuration.getUserURL(resultDTO.getId()); userResult = okhttp.getResponse(userGetURL); userDTO = gsonTools.getUser(userResult); // save user info into SQlite if ( userDAO.setUser(userDTO) ) { intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); } } else { loginMsg = "密碼或帳號不正確"; } // UI Thread LoginActivity.this.runOnUiThread(new Runnable() { public void run() { tvLoginResult.setText(loginMsg); } }); } }).start(); }
分类:
Android安卓
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具