在android进行多线程操作,可以使用android.os.HandlerThread,android.os.Handler类来进行。
下面的例子是,界面上一个TextView控件,使用一个新线程在这个TextView上面显示数字,每隔1秒加1,按button后,停止更新计数。
package Test.wangfu;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
private boolean isRuning=true;
private int timer=0;
private Handler hander;
private HandlerThread thread;
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
final Button button = (Button) this.findViewById(R.id.callButton);
text = (TextView) this.findViewById(R.id.textLabel);
class mylistener implements OnClickListener {
public void onClick(View v) {
isRuning=false;
text.setText("结束");
}
}
button.setOnClickListener(new mylistener());
//多线程
thread=new HandlerThread("mytestthread");
thread.start();
hander=new Handler(thread.getLooper());
Runnable r=new Runnable(){
public void run() {
// TODO Auto-generated method stub
if(isRuning){
//使用runOnUiThread更新控件值,不使用的话将会出现:Only the original thread that created a //view hierarchy can touch its views.的错误。
TestActivity.this.runOnUiThread(new Runnable(){
public void run() {
// TODO Auto-generated method stub
text.setText(String.valueOf(timer));
}});
timer++;
hander.postDelayed(this, 1000);
}
}
};
hander.postDelayed(r, 1000);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Enter Number to Dial:" />
<Button
android:id="@+id/callButton"
android:layout_width="159dp"
android:layout_height="wrap_content"
android:text="停止" />
</LinearLayout>
分享到:
相关推荐
### Android多线程详解 #### 一、进程与线程概览 在深入探讨Android多线程之前,我们首先理解进程和线程的基本概念。**进程**是正在运行的程序实例,每个进程拥有自己独立的内存空间和系统资源。而**线程**则是...
- 对多线程编程有一定的了解。 **发展建议:** - 在掌握了Java基础之后,进一步学习Java并发编程(Concurrent Library)、NIO等高级特性。 - 加强XML和JSON数据处理的能力,这在实际项目中非常有用。 - 尝试做一些...
在Android中实现多线程断点下载 Android提高篇内容整理 android移动开发案例精选 Android通过画线实现button效果 Android如何防止apk程序被反编译 Android 之 AIDL 和远程 Service 调用 Android 相对布局技巧 ...
在Android开发领域,构建一款手机卫士应用是一个常见的实战项目,旨在提升用户的手机性能和安全性。本项目聚焦于“清除程序缓存”这一核心功能,它对于优化设备内存使用、节省存储空间以及提高系统运行速度至关重要...
《Android 开发范例代码大全(第2版)》是一本深入浅出的Android开发实践指南,涵盖了Android应用开发的各个重要方面。这本书以其丰富的范例代码和详细的解释,为开发者提供了宝贵的参考资料,无论是初学者还是有...
《阿里巴巴Android开发手册》是一份集成了阿里巴巴集团内部各Android开发团队多年积累的智慧和经验的重要文档。该手册旨在指导Android开发者们更加高效、高质量地进行App开发工作,以确保最终的产品具有良好的用户...
同时,性能优化可能是这一章节的重点,包括减少渲染开销、使用高效的算法、内存管理以及多线程技术来确保游戏在各种设备上都能流畅运行。 最后,可能还会涉及游戏的发布和测试流程,包括如何打包APK、如何进行调试...
【Android应用开发-6年-张苗1】的描述中提到了多个关键知识点,以下是详细的解释: 1. **Java基础**: - **反射**:Java反射机制允许程序在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用其方法。...
【Android高级应用源码——豆瓣网客户端】 在Android开发领域,深入理解并研究高级应用的源码对于提升开发者的技术水平至关重要。...同时,也能了解现代Android开发的最佳实践,为自己的项目开发积累宝贵经验。
七、多线程与异步处理 由于Android应用的主线程(UI线程)不允许执行耗时操作,开发者常使用IntentService、AsyncTask或Handler/Looper机制来处理后台任务,以保持用户界面的响应性。 八、数据持久化 Android提供了...
通过《Google Android开发入门与实战》提供的源代码,读者可以实际操作这些概念,从而加深理解并积累实践经验。这些代码示例覆盖了从简单的“Hello, World!”到复杂的交互式应用的各种场景,是学习Android开发的重要...
【Android开发入门与实战的代码】这一主题涵盖了Android应用程序开发的...随着经验的积累,你还可以进一步探索更高级的主题,如多线程、网络编程、数据库操作、第三方库的使用等,从而成为一名出色的Android开发者。
9. **多线程(Thread)**:Android应用通常在主线程中运行,为了执行耗时操作,如网络请求,需要使用子线程或者异步任务,避免阻塞UI。 10. **Kotlin语言**:Kotlin是现代Android开发的首选语言,它提供了更安全的...
- **线程管理**:合理使用多线程技术,避免UI阻塞。 - **网络请求优化**:采用异步加载数据,减少等待时间。 - **数据库操作**:合理设计数据库结构,提高查询效率。 ### 典型案例分析 #### 5. 阅读类应用开发 - *...
总之,通过学习和使用这个Android XML-RPC博客客户端源码,开发者不仅可以掌握XML-RPC通信技术,还能了解到Android应用的网络编程、数据解析、界面设计等多个方面,为今后的Android开发积累宝贵经验。
- 覆盖从入门到进阶的各种主题,如Material Design、多线程编程等。 3. **GitHub项目**: - 浏览GitHub上的开源项目,学习实际项目的设计和实现思路。 - 参与贡献,提升实战能力。 #### 四、实践项目 1. **...
7. **多线程**:Android应用常常需要处理耗时操作,如网络请求,此时会用到AsyncTask或Thread来避免阻塞主线程。 8. **网络编程**:使用HttpURLConnection或第三方库如OkHttp进行网络请求,获取JSON或XML数据。 9....
在Android开发领域,深入理解源码是提升技术能力的重要途径。本篇文章将围绕“Android高级应用源码-一个短信应用源码.zip”进行详细剖析,旨在帮助开发者从源码中汲取养分,提升对Android系统级短信应用的理解和实战...