我们都知道Hanlder是线程与Activity通信的桥梁,我们在开发好多应用中会用到线程,有些人处理不当,会导致当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程数就越多,你的机器就会变得越慢。
为了方便 大家理解,我写一个简单的Demo.功能就是每2秒中将应用的Title更换一次。具体步骤如下:
第一步:新建一个Android工程命名为ThreadDemo。
第二步:修改ThreadDemo.java,代码如下:
package com.tutor.thread;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
public class ThreadDemo extends Activity {
private static final String TAG = "ThreadDemo";
private int count = 0;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
//为了方便 查看,我们用Log打印出来
Log.e(TAG, Thread.currentThread().getName() + " " +count);
count++;
setTitle("" +count);
//每2秒执行一次
mHandler.postDelayed(mRunnable, 2000);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过Handler启动线程
mHandler.post(mRunnable);
}
}
当然上面不是重点,退出应用时,线程还在跑,打开Logcat视窗或者cmd终端查看,如下(刚吃了午餐回来,线程还在跑着):
当我们再次启动应用时,会重新启动一个新的线程,如下图所示
所以我们在应用退出时,要将线程销毁,我们只要在Activity中的,onDestory()方法处理一下就OK了,如下代码所示:
package com.tutor.thread;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
public class ThreadDemo extends Activity {
private static final String TAG = "ThreadDemo";
private int count = 0;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
public void run() {
//为了方便 查看,我们用Log打印出来
Log.e(TAG, Thread.currentThread().getName() + " " +count);
count++;
setTitle("" +count);
//每2秒执行一次
mHandler.postDelayed(mRunnable, 2000);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过Handler启动线程
mHandler.post(mRunnable);
}
@Override
protected void onDestroy() {
//将线程销毁掉
mHandler.removeCallbacks(mRunnable);
super.onDestroy();
}
}
分享到:
相关推荐
在Android开发中,使用线程是一项常见的任务,但如果不妥善处理,可能会引发一系列问题,比如内存泄漏、性能下降以及资源浪费。以下是一些在Android中使用线程时应注意的关键点,这些点可以从提供的示例代码中提炼...
在Android开发中,线程管理是一项重要的任务,尤其是在处理耗时操作时,如网络请求、数据库操作或大计算量的任务。本篇文章将深入探讨如何合理地结束Android中的线程,以确保应用程序的性能和稳定性。 首先,理解...
在Android应用开发中,文件上传是一项常见的任务,尤其是在处理大文件或者需要提高用户交互体验时,多线程技术显得尤为重要。本主题聚焦于"Android多线程文件上传",我们将探讨如何利用多线程技术来优化文件上传过程...
在Android应用开发中,多线程是一个至关重要的概念,它涉及到如何在后台处理耗时任务,以避免阻塞主线程并提升用户体验。标题"Android多线程操作"和描述"Android多线程开发实例,对使用多线程的用户有一定的参考价值...
在Android开发中,多线程分段下载是一项重要的技术,特别是在处理大文件或者网络环境不稳定的情况下,能够提高下载效率并优化用户体验。这个"Android多线程分段下载源码"实例是一个很好的学习资源,它实现了文件的...
在Android,这里的线程分为有消息循环的线程和没有消息循环的线程,有消息循环的线程一般都会有一个Looper,这个事android的新 概念。我们的主线程(UI线程)就是一个消息循环的线程。针对这种消息循环的机制,我们...
本篇将详细讲解如何在Android中使用AsyncTask实现多线程计数,并展示如何将计数结果显示到UI。 首先,我们需要理解Android的线程模型。Android应用的主要工作线程是主线程,也称为UI线程。这个线程负责绘制和交互UI...
在Android开发中,多线程管理是至关重要的技术,它涉及到应用的性能、用户体验以及资源的有效利用。Android系统默认在主线程(UI线程)执行所有的用户交互,如果在这个线程中执行耗时操作,会导致应用程序无响应...
【Android多线程】\n\n在Android开发中,多线程是不可或缺的一部分,它能够提升应用程序的性能和用户体验。Android系统默认在一个主线程中运行应用程序,包括UI更新,如果在此线程中执行耗时操作,会导致用户界面...
在Android游戏开发中,多线程的应用至关重要,它能让游戏运行更加流畅,避免因为主线程(UI线程)被阻塞而引发的ANR(Application Not Responding)问题。本资源"Android游戏开发之多线程的操作方式源码"正是针对这...
在Android开发中,多线程下载是一项常见的任务,特别是在处理大文件时,为了提高用户体验,通常需要实现下载的暂停、断点续传功能。本文将深入解析如何在Android环境中实现这样的功能。 首先,理解“多线程下载”的...
在Android应用开发中,线程管理和UI更新是至关重要的部分,因为Android系统为每个应用程序分配一个主线程,也称为UI线程。主线程主要负责处理用户界面的交互,包括绘制和更新视图。然而,执行耗时的操作(如网络请求...
在Android应用开发中,多线程下载是一项关键技术,它能显著提高大文件下载的效率,尤其是在网络条件不稳定的情况下。断点续传是多线程下载的一个重要特性,允许用户中断下载后,从上次停止的位置继续,提高了用户...
在Android系统中,多线程是提升应用性能和用户体验的重要手段。然而,由于Android UI操作必须在主线程中执行,因此我们...在实际开发中,还需注意线程同步问题,避免因并发导致的竞态条件,确保应用的稳定性和安全性。
在提供的`ThreadDemo`示例中,可能包含了如何在Android中使用线程和定时器的具体代码实现,这将有助于加深对这两个概念的理解。通过分析和学习这个示例,你可以更好地掌握在实际项目中如何运用这些技术。记得实践是...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...
在Android开发中,线程是实现多任务并行执行的关键工具。本文将深入解析Android线程启动的方法,并通过源代码示例帮助初学者理解和掌握这一关键技能。 Android系统基于Java,因此其线程机制遵循Java的基本规则,但...
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
在Android开发过程中,开发者经常会遇到各种问题,这些挑战可能...以上只是部分Android开发中的常见问题、实用技巧和注意事项,实际开发中还有更多细节需要注意。不断学习和实践,才能成为一名优秀的Android开发者。
在Android应用开发中,由于主线程负责用户界面的更新,执行耗时操作(如网络请求、数据库操作等)会阻塞UI,导致应用无响应,因此需要使用异步线程来处理这些任务。本示例"Android异步线程使用Demo"主要探讨的是...