android-Android在UI线程中启动新线程复制文件,为什么还会使界面延迟

问题描述

Android在UI线程中启动新线程复制文件,为什么还会使界面延迟

new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// 把sql文件写入sd卡,然后把路径给so
String mPath="";
if(android.os.Environment.getExternalStorageState().equals("mounted")){
mPath = android.os.Environment.getExternalStorageDirectory().toString()
+ "/com.newhaoli.Teamtips/";
}else{
mPath=android.os.Environment.getDataDirectory().getAbsolutePath()+
"/com.newhaoli.Teamtips/";
}
// TODO Auto-generated method stub
// 扫描或者复制整个文件夹到sd卡上
copyDir("Query", mPath+"Workflow/");
copyDir("htmlinc", mPath+"Workflow/");
copyDir("Html", mPath+"Workflow/");
}
}).start();

解决方案

android 自带有异步线程封装的很好。

解决方案二:

即使你开启子线程,也不代表不会引起页面卡顿,还有就是你的页面可能太复杂或者不合理,有别的地方在UI线程中消耗太多时间。

解决方案三:

即使你开启子线程,也不代表不会引起页面卡顿,还有就是你的页面可能太复杂或者不合理,有别的地方在UI线程中消耗太多时间。

解决方案四:

请注释掉这段代码,在运行一下,看看是不是子线程的问题

时间: 2024-10-30 12:19:58

android-Android在UI线程中启动新线程复制文件,为什么还会使界面延迟的相关文章

Android编程实现在一个程序中启动另一个程序的方法

本文实例讲述了Android编程实现在一个程序中启动另一个程序的方法.分享给大家供大家参考,具体如下: Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEG

Android UI设计中的特效 界面左右…

out_to_left.xml: <?xml version="1.0" encoding="utf-8"?> <!--从屏幕左边退出,先退后2%p位置,再向左退出  --> <set xmlns:android="http://schemas.android.com/apk/res/android"     android:shareInterpolator="false" >     &

Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)

最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁:Found one Java-level deadlock:============================="Thread-122":  waiting to lock monitor 0x484052e4 (object 0x1af2bb08, a com.raisecom.ems.temple

android开发-安卓编辑框中插入录音后的文件

问题描述 安卓编辑框中插入录音后的文件 在安卓上开发一个笔记,可以支持文本和录音功能,想在编辑框中既能写文字,又能插入录音,查看时可点击播放,怎么实现

android开发教程之子线程中更新界面_Android

每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联.Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了.由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面.

android开发教程之子线程中更新界面

每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联.Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了.由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面.

详解Java多线程编程中线程的启动、中断或终止操作_java

线程启动: 1.start() 和 run()的区别说明start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new

C++程序中启动线程的方法_C 语言

 C++11 引入一个全新的线程库,包含启动和管理线程的工具,提供了同步(互斥.锁和原子变量)的方法,我将试图为你介绍这个全新的线程库. 如果你要编译本文中的代码,你至少需要一个支持 C++11 的编译器,我使用的是 GCC 4.6.1,需要使用 -c++0x 或者 -c++11 参数来启用 C++11 的支持. 启动线程 在 C++11 中启动一个线程是非常简单的,你可以使用 std:thread 来创建一个线程实例,创建完会自动启动,只需要给它传递一个要执行函数的指针即可,请看下面这个 He

Android什么时候进行View中Background的加载

对大多数Android的开发者来说,最经常的操作莫过于对界面进行布局,View中背景图片的加载是最经常做的.但是我们很少关注这个过程,这篇文章主要解析view中背景图片加载的流程.了解view中背景图片的加载(资源的加载)可以让我们对资源加载的过程进行一些优化,另外当需要进行整个应用的换肤时,也可以更得心应手. View图片的加载,我们最常见的就是通过在XML文件当中进行drawable的设置,然后让Android系统帮我们完成,或者手动写代码加载成Bitmap,然后加载到View上.这篇文章主