Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。
Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。
利用Handler刷新界面
实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。
// 在onCreate()中开启线程
new Thread(new GameThread()).start();
// 实例化一个handler
Handler myHandler = new Handler()
{
//接收到消息后处理
public void handleMessage(Message msg)
{
switch (msg.what)
{
case Activity01.REFRESH:
mGameView.invalidate(); //刷新界面
break;
}
super.handleMessage(msg);
}
};
class GameThread implements Runnable
{
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
Message message = new Message();
message.what = Activity01.REFRESH;
//发送消息
Activity01.this.myHandler.sendMessage(message);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
}
}
使用postInvalidate()刷新界面
使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。
class GameThread implements Runnable
{
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在线程中更新界面
mGameView.postInvalidate();
}
}
}
分享到:
相关推荐
综上所述,ContentObserver是Android中一种有效的数据变更监听机制,它可以帮助开发者实时响应数据变化,实现更高效的用户界面同步。熟练掌握ContentObserver的使用,可以提升应用的响应性和用户体验。通过阅读提供...
3. **Android笔记应用的基本结构** - **MainActivity**: 应用的主要入口,通常负责初始化界面和处理用户交互。 - **NoteActivity/EditorActivity**: 用于创建和编辑笔记的活动,可能包括输入框、编辑器和保存功能...
4. **UI设计与布局**:Android的布局文件XML是构建用户界面的核心。源码中的layout文件展示了如何使用LinearLayout、RelativeLayout、ConstraintLayout等组件创建复杂的布局,以及如何使用自定义View增强UI表现力。...
通常在开发界面时,总有findViewById的重复工作,DataBinding可以免去这些操作。同时,DataBinding还可以直接在xml中绑定数据,免去类似setText的操作,让数据来驱动UI刷新。 Jetpack笔记代码 使用 在app/build....
【Android笔记】是一份全面的学习资源,旨在帮助初学者掌握Android应用开发的核心概念和技术。这份资料涵盖了许多关键领域,从基础到进阶,为开发者提供了一个系统性的学习路径。 首先,【Android介绍】部分通常会...
在Android开发中,有时我们需要为用户提供一种自由绘画的界面,比如涂鸦应用或者手写笔记应用,这时就需要用到自定义画板的功能。"画板android-palette-master.zip"就是一个针对这种需求的开源项目,它提供了丰富的...
这篇名为“Android学习笔记 - Preference的使用”的博客文章可能涵盖了以下关键知识点: 1. **Preference基础知识**: - `Preference` 类是Android中的一个抽象类,它是所有设置项的基础。`CheckBoxPreference`、`...
这篇笔记主要涵盖了多个Android开发的实践模块,包括数据存储、用户界面、网络通信等基础且重要的主题。以下是对这些主题的详细解析: 1. **Fuxi**: 可能是指一个项目的基础框架或者组件,Fuxi在汉语中没有特定的...
【Android应用开发学习笔记】 Android应用开发是移动设备软件开发的重要组成部分,主要涉及四大组件、UI设计以及系统交互。本文将深入探讨这些关键知识点。 **一、Android四大组件** 1. **Activity(活动)** - ...
在本篇Android学习笔记中,我们将探讨如何使用SlidingDrawer实现多页显示,并理解其工作原理和相关属性。 首先,SlidingDrawer通常用于在主界面下方或上方滑出额外的内容,例如菜单、设置或附加信息。它有两个主要...
1. **用户界面(UI)设计**:设计一个直观、易用的UI至关重要,以便用户能快速记录笔记。这可能包括文本输入框、日期选择器、标题栏以及用于分类和标签的选项。 2. **数据存储与同步**:Android提供SQLite数据库来...
此外,还可能涉及到前进、后退、刷新、书签等功能的实现,这需要对Android的Intent和Activity生命周期有深入理解。 2. **layoutTest3, layoutTest2**:这些文件夹代表了Android中的布局测试实验。线性布局...
滑动菜单 下拉刷新 ExpandableListView适配器配置及使用
4. **UI设计与交互**:Android Studio中的XML布局文件会被用来创建用户界面,包括笔记的创建、编辑、查看等功能。开发者可能会用到RecyclerView或者ListView来展示笔记列表,并实现滑动刷新、下拉加载等交互效果。 ...
开发这样一个系统需要掌握Android平台的各种核心技术,包括数据存储、用户界面设计、网络同步以及安全策略等。通过不断优化和迭代,我们可以构建出更加智能、便捷且安全的个人信息管理解决方案。
### Android 应用界面设计与操作 #### 1. 设置标题栏的颜色与字体大小 在Android应用开发中,有时我们需要对应用内的标题栏进行自定义,例如改变其颜色或字体大小等。下面是如何实现这一功能的具体步骤: ```java /...
Android入门笔记 1. 开发环境配置 在开始Android开发之前,首先需要配置好开发环境。Eclipse是一款经典的集成开发环境(IDE),适用于Android开发。你可以从以下地址下载Eclipse: - Eclipse下载地址:此处应填写...
在Android开发中,`onConfigurationChanged` 是一个关键的生命周期方法,它涉及到应用程序对设备配置变化的响应。本文将深入探讨 `onConfigurationChanged` 的详细用法及其在Android应用程序中的重要性。 首先,`...
每次在Canvas上绘制新的点,然后刷新界面,模拟出连续的书写过程。这样,用户就可以看到之前记录的笔画按顺序回放。 在提供的"FontDemo"项目中,可能包含了有关如何在Android应用中使用自定义字体的示例。这与笔画...