- 浏览: 1220754 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
这个例子对于子线程不能处理UI线程的View可以有助于了解:
package com.example; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; /*介紹過Android主線程與子線程之溝通。所謂主線程通常是UI線程。 * Android的UI是單線程(Single-threaded)的。為了避免拖住GUI, * 一些較費時的物件應該交給獨立的線程去執行。如果幕後的線程來執行UI物件, * Android就會發出錯誤訊息CalledFromWrongThreadException * 基本上,Android希望UI thread能夠給予User做快速的反應。 * 如果UI thread花費太多時間做幕後的事情,超過5秒鐘,Android就會給user提示 */ public class Looper_6 extends Activity implements OnClickListener { private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; private final int FP = LinearLayout.LayoutParams.FILL_PARENT; public TextView tv; private myThread t; private Button btn, btn2; private Handler h; private Context ctx; public void onCreate(Bundle icicle) { super.onCreate(icicle); ctx = this; LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); btn = new Button(this); btn.setId(101); btn.setBackgroundResource(R.drawable.icon); btn.setText("test looper"); btn.setOnClickListener(this); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(100, 50); param.topMargin = 10; layout.addView(btn, param); btn2 = new Button(this); btn2.setId(102); btn2.setBackgroundResource(R.drawable.icon); btn2.setText("exit"); btn2.setOnClickListener(this); layout.addView(btn2, param); tv = new TextView(this); tv.setTextColor(Color.WHITE); tv.setText(""); LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(FP, WC); param2.topMargin = 10; layout.addView(tv, param2); setContentView(layout); // ------------------------ t = new myThread(); t.start(); } public void onClick(View v) { switch (v.getId()) { case 101: try { Thread.sleep(8000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } String obj = "mainThread"; Message m = h.obtainMessage(1, 1, 1, obj); h.sendMessage(m); break; case 102: h.getLooper().quit(); finish(); break; } } public class EventHandler extends Handler { public EventHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { tv.setText((String) msg.obj); } } class myThread extends Thread { final boolean TEST_FLAG = false; public void run() { Looper.prepare(); h = new Handler() { public void handleMessage(Message msg) { if (TEST_FLAG) // tv物件是主線程誕生的UI物件 // 如果子線程也去插手的話,Android程式就停止了 tv.setText("myThread is running"); else { EventHandler ha = new EventHandler(Looper .getMainLooper()); String obj = (String) msg.obj + ", myThread"; Message m = ha.obtainMessage(1, 1, 1, obj); ha.sendMessage(m); } } }; Looper.loop(); } } }
- Looper_6.rar (29.3 KB)
- 下载次数: 15
发表评论
-
输入法弹出后,不影响activity原有布局(android:windowSoftInputMode)
2012-07-08 21:03 4371在AndroidManifest.xml文件中的activit ... -
屏幕截图
2012-04-19 18:24 1312直接贴代码,不说话:) ScreenShot.java文件: ... -
Android Bitmap 圆角 倒影
2012-03-13 23:17 1543// 获得带倒影的图片方法 public Bitmap ... -
View进行透明度设置
2012-03-08 23:12 1818对特定View进行透明度设置的代码片段: public v ... -
动态设置GridView宽,高
2012-03-07 14:24 2354这里假设实例Id为mGrid: RelativeLayo ... -
ActivityGroup使用方法
2012-02-15 17:34 7162这个例子是在http://www.anddev.org上看到的 ... -
Android进度条总结
2011-04-08 10:27 16051.在标题栏显示进度条: requestWindowFea ... -
TextView实现多行本文滚动
2011-04-07 21:49 1730Android中我们为了实现文本的滚动可以在ScrollVie ... -
Android 给应用定制皮肤
2011-04-07 21:29 3184在实现程序功能的同时,如果能让程序界面更加美观,有锦上添花之妙 ... -
自定义无标题Dialog
2011-03-18 13:39 22741.主Activity: public class D ... -
手机分辨率和密度的理解
2011-01-24 10:22 2482QVGA,WQVGA屏density=120 HVGA屏den ... -
Android Bitmap 圆角
2011-01-20 10:16 1747第一种是生成圆角背景: Button mView = (B ... -
如何保证Activity实例个数唯一(Activity启动模式)
2011-01-14 11:35 10695ActA.java文件: public class Act ... -
Dialog自定义方法1
2011-01-13 14:51 1388public class SelfDialog { D ... -
UI方面的一些知识点总结
2010-09-17 16:52 14941.如何获取手机屏幕的分辨率: /* 取得屏幕解析像 ... -
Android中画图总结(2)
2010-09-17 15:41 18891.如何显示一张自定义位图: step 1:先定义一张位图 ... -
Android中画图总结(1)
2010-09-17 15:32 14961.如何获取 res 中的资源 ... -
TextView中style的应用
2010-09-10 14:09 1244<TextView android:layout_w ... -
显示带图片的Toast提示
2010-09-09 14:22 2038ImageView mView01 = new Image ... -
color.xml中各种颜色值整理
2010-09-05 22:07 2418<color name="solid_bl ...
相关推荐
通过学习这个实例,开发者可以掌握如何在多线程环境中正确处理UI更新,避免出现线程安全问题,提高应用程序的响应性和用户体验。 总结来说,C# WinForm应用中的跨线程修改UI是通过异步编程和UI线程同步机制来实现的...
标题"Android Thread线程动态操作UI的Demo"所涉及的核心知识点包括: 1. 主线程与工作线程: Android应用的UI更新必须在主线程进行,而耗时操作如网络请求、数据库操作等应放在工作线程(Worker Thread)。主线程...
Demo测试跨线更新UI 第一种 : Thread 达到跨线程更新UI 虽然使用Dispatcher.Invoke 和模拟winform 里面的DoEvent 但是运行中关闭还是会有异常,而且耗资源高; 第二种 : DispatcherTimer 失败:UI还是会卡顿; 第三...
通过学习和实践这个Demo,开发者可以掌握如何在WinForms应用中有效地实现多线程和进度条功能,提高用户体验,并理解如何在多线程环境中安全地更新UI。在实际项目中,这样的技术可以应用于数据加载、文件操作、网络...
在Demo中,如果线程需要更新UI(用户界面),那么必须在主线程中进行,因为只有主线程才能修改UI组件。我们可以使用Synchronize或Queue方法将更新UI的任务调度到主线程。 至于“每隔一秒刷新一次当前时间”,这可以...
在iOS开发中,多线程是一项至关重要的技术,它能够帮助开发者实现应用程序的高效运行和流畅的用户体验。本文将深入探讨“iOS多线程...通过这个Demo,开发者可以更深入地理解多线程编程,提升iOS应用的性能和用户体验。
标题“uidemo01.zip”暗示我们关注的是一个包含了用户界面示例的压缩文件,而“漂亮通用界面”的描述进一步提示我们,这个压缩包可能包含了一些设计精良、适用于多种场景的用户界面元素或者应用程序。标签“qt”揭示...
在安卓应用开发中,多线程技术是...这个“安卓多线程断点现在的demo”是一个全面展示Android下载功能的实例,开发者可以通过学习和理解这个demo,提升自己在处理复杂下载任务时的能力,更好地优化应用性能和用户体验。
首先,我们需要理解Android主线程,也被称为UI线程,它负责处理用户界面的更新和事件响应。如果在主线程中执行长时间运行的任务,会阻塞UI,导致应用无响应(ANR)。因此,Android开发者需要学习如何正确地使用异步...
通过对这个demo的深入学习,学生能更好地理解Android多线程的工作原理和实践技巧。 总结来说,Android多线程的掌握对于开发者优化应用性能和提升用户体验至关重要。通过分析这个详细的demo,学生们可以逐步了解并...
本压缩包“C#多线程Demo”提供了四个具体的WinForm多线程示例,旨在帮助开发者深入理解和掌握线程的使用。下面将详细介绍这些知识点。 1. **线程的创建与启动** 在C#中,我们可以通过`System.Threading`命名空间中...
首先,我们需要理解Android主线程,也被称为UI线程,它的主要任务是处理用户界面事件,如触摸事件、绘制视图等。如果在这个线程中执行耗时操作,如网络请求或数据库操作,就会导致应用程序无响应(ANR),严重影响...
总之,“android文件多线程下载demo”涵盖了Android开发中的多线程编程和SQLite数据库应用两大关键知识点,对于初学者来说,这是一个很好的实践项目,可以帮助他们深入理解这两个重要概念,并将其应用于实际项目中。...
1. **异步执行任务**:`BackgroundWorker`提供了异步执行任务的能力,这意味着主要的UI线程可以继续处理用户交互,而不会因为等待后台任务完成而冻结。 2. **事件驱动模型**:`BackgroundWorker`使用事件来报告进度...
本DEMO针对初学者,旨在帮助理解如何在C#环境中进行多线程编程,并通过简洁的代码示例来突出关键点。 首先,我们需要了解.NET Framework提供的System.Threading命名空间,它是C#多线程编程的核心。在该命名空间中,...
通常,主线程(UI线程)负责用户界面的更新,而其他线程则处理计算等任务。当计算完成需要更新界面时,应通过消息队列或事件通知主线程进行操作,以确保界面的稳定和一致性。 总的来说,"基于VS2010的C++多线程开发...
这个"android多线程下载demo"展示了如何利用多线程分段下载一个APK文件,同时实现实时更新UI展示下载进度,并在下载完成后自动跳转到应用安装界面。以下是对这个Demo涉及知识点的详细解释: 1. **多线程下载**:多...
在WPF(Windows Presentation Foundation)应用中,由于UI线程(主线程)负责处理用户界面的绘制和事件处理,因此当需要在子线程中修改UI元素时,必须遵循特定的规则来确保线程安全。这个"wpf 子线程更新UI demo"是...
本文将基于提供的标题“Android 多线程下载简单demo之Thread”和描述,深入讲解如何实现一个简单的多线程下载功能。这个示例来源于一个CSDN博客,通过访问提供的链接...