Android学习:UI线程规则+经典异常

一:看程序

二:可以创建一个新的线程执行阻塞部分

new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(50000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

三:现象

点击button2,不会影像button1,button1继续移动。

四:规则

There are simply two rules to Android‘s single thread model:

(1)Do not block the UI thread.不要阻塞UI线程

(2)Do not access the Android UI took it from outside the UI thread.

不要在UI线程之外的其他线程中,对视图中的组件进行设置。

经典异常:

Only the original thread that created a view hierarchy can touch its views.

只有创建view的那个线程才能对其进行修改。

时间: 2024-08-10 12:04:27

Android学习:UI线程规则+经典异常的相关文章

Android中UI线程与后台线程交互设计的5种方法

我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一 些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须要重新开启一个后台线程运行这些任务.然而,往往这些任务最终又会直接或者 间接的需要访问和控制UI控件.例如访问网络获取数据,然后需要将这些数据处理显示出来.就出现了上面所说的情况.原本这是在正常不过的现象了,但是 android规定除了UI线程外,其他线程都不可以对那些UI控件访问和操控.为了解决

Android 非UI线程中更新UI

Android 非UI线程中更新UI runOnUiThread(new Runnable() { public void run() { onDown(null); } });

WPF异常捕获三种处理 UI线程, 全局异常,Task异常

原文:WPF异常捕获三种处理 UI线程, 全局异常,Task异常 protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);RegisterEvents();} private void RegisterEvents(){//TaskScheduler.UnobservedTaskException += (sender, args) =>//{// MessageBox.Show(args.Exception

【转载】Android中UI线程与后台线程交互设计的5种方法

原帖地址:http://www.cr173.com/html/19165_1.html 在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须要重新开启一个后台线程运行这些任务.然而,往往这些任务最终又会直接或者间接的需要访问和控制UI控件.例如访问网络获取数据,然后需要将这些数据处理显示出来.就出现了上面所说的情况.原本这是在正常不过的现象了,但是android规定除了UI线程外,其他线程都不可以对那些UI控件访问

Android中UI线程与后台线程交互设计的6种方法

在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须要重新开启 一个后台线程运行这些任务.然而,往往这些任务最终又会直接或者间接的需要访问和控制UI控件.例如访问网络获取数据,然后需要将这些数据处理显示出来. 就出现了上面所说的情况.原本这是在正常不过的现象了,但是android规定除了UI线程外,其他线程都不可以对那些UI控件访问和操控.为了解决这个 问题,于是就引出了我们今天的话题.Android中后台线程如何

Android非UI线程更新UI的几种方法

Android用于实现非UI线程与UI线程的交互方法如下: 1.Handler 2.Activity.runOnUIThread(Runnable) 3.View.Post(Runnable) 4.View.PostDelayed(Runnabe,long) 5.AsyncTask

Android 操作UI线程的一些方法

我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据.但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的.下面总结4中方法用来在线程中操作UI界面. 模拟耗时操作 private void connectNet() throws InterruptedException { Thread.sleep(2000); } 方法一:Handler 子线程中通过Handler的sendMessage(msg)发送事件:

Android中UI线程与worker线程的通信方法

在安卓开发中,线程是十分重要的,几乎你能看到的所有的界面或者功能都是通过线程来完成的.安卓中的线程又分UI线程和工作线程.其中UI线程主要负责和用户交互(说白了就你你在安坐上看到的界面,点击或者拖动这样一些效果):而其它线程出现的主要目的是为UI线程服务. 一般而言,用户新建线程的目的是为了做一些计算或者进行一些IO操作来处理用户的需求.但是由于UI线程和其它线程是两个线程,不能使用一般的在同一个线程间变量通信的方式来进行数据传递.只好令找解决办法,目前我发现了又如下方法可以解决这个问题: 方法

Android 系统UI设计规则

1. Android UI技巧 1.1 不该做什么 1.2 该做什么 2. Android UI 设计理念和注意事项 2.1 Android UI设计理念 2.2 优秀UI设计准则 2.3 设计需要考虑 3. Android UI 框架特性/界面布局 4. Android UI 图标设计原则 4.1 图标的尺寸规则和密度 4.2 图标的设计规则 5. Android UI 开发的GUI工具包,图标,字体和工具 5.1 视觉开发工具 5.2 Android 模板.PSD.矢量工具 5.3 Andr