android 中的setOnFocusChangeListener()方法,不能与线程一起使用?

图片说明

为什么我这样使用,我的app就会卡顿一下,然后失去响应?那么该怎么解决呢?

0

3个回答

把线程部分,换成异步任务。

0
qq_36530458
Windy Ming 能不能简单的讲解一下异步任务,我是很明白,谢谢了。
2 年多之前 回复

你可能在Run函数里面是进程阻塞的代码,或者,在run里面有UI更新相关的操作。

0
qq_36530458
Windy Ming 是因为我查询了数据库,导致阻塞了UI线程,但是要怎么处理这种情况呢》网上说异步处理,但是不是很明白,有没有简单的讲解下或者相关的的demo给参考下,先谢啦
2 年多之前 回复

普通情况下,新线程已经是异步。但是这个异步内容不能阻塞进程。进程阻塞的任务 只是开线程处理是没有用的。这个线程跟进程之间的从属关系你应该是知道的。
一般的来讲,进程阻塞就单开进程,线程阻塞就单开线程,是最简单的解决办法。 开进程没有线程这样简单,涉及到进程间通讯以及存储共享问题。
这个问题如果是我来解决的话,我应该是先拆解getKPIDB的内容,看看能否在内部就作为异步处理。不行的话,就开异步进程处理。
看你getKPIDB里面是个与逻辑无关的操作,我觉得把这部分提出来做一个异步服务是比较常规的做法。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
abstract 不能与哪些关键字同时使用?(abstract 不能修饰什么?)
abstract 不能修饰 private、static、final、synchronize、native 和 构造方法、属性 private:abstract 是为了用来让子类继承的,子类不能继承父类 private 方法 static:static 是属于类的,在类加载时同时被加载了,被类的所有实例共享,而且一定存在具体的实现。但是抽象类不能创建类的实例,抽象方法也没有方法体,这两个关键...
abstract不能和private,static以及final同时使用的原因
bstract 一定不能和 private, static, final 同时使用.1、抽象方法:只有方法头,没有方法体定义,也就是说抽象方法无需实现,抽象方法的意义在于子类实现,private意义在于其他类直接调用它已实现的方法。这两者搭配毫无意义(private修饰后为私有,子类不能继承,自然不能使用)2、final用于类名前,表示类不可被继承;final用于变量前,表示它是只能一次赋值的变量...
java中和abstract有冲突的不能共存的修饰符
     有三个 private final static      fianl:首先abstract修饰的类,该类中的方法子类继承之后需要重写的,可是final修饰的          类不能被继承,也就没子类,方法更不能得到重写,相互冲突;不能共存     private:私有的意思,方法子类是不能被继承到的,那么方法就没有被重写,可是abstract          是要求方法重写的也相互...
sql语法回顾:“fetch: 提取类型 last 不能与只进游标一起使用。”
declare @qk char(4) declare cqk cursor for select qkb.qkh from qkb,tgb where (qkm = '计算机学报' and qkb.qkh = tgb.qkh and sgjg = '未通过') open cqk fetch last from cqk into @qk update tgb set sgjg = '通过
:“登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。”
将配置中数据库连接字符串中的:integrated security=false 即可
为什么abstract与final不能一起使用
-
abstract不可以和哪些关键字共存
private: abstract是表明希望被覆盖的,但是private,子类看不到。 static: 如果是static就需要创建对象 但abstract不需要创建对象(没有意义) final: final表示不能被子类覆盖 abstract表名希望被覆盖
abstract不能和哪些关键字共存?
private abstract void run(){} //不可以。abstract方法要给子类重写,它俩是矛盾的。private只能给本类访问。static abstract void run(){} //不可以。static可以被 类名.run() 调用,而类名.run()调用抽象方法是没有意义的。final  abstract void run(){} //不可以。final修饰方法不让...
TV端使用RecyclerView时遇到的问题
1.有10条数据,但是只显示出一条。。。    问题原因:item的布局使用了match_parent,修改为wrap_content后正常显示 2.在TV端的焦点问题,在手机端手一滑就可以查看更多的数据,因为焦点在RcyclerView上,在TV端需要使用遥控器左右键针对item切换焦点就做不到了。。。     解决方法:设置RecyclerView的android:foc
static和abstract为何不能同时出现
当我们试图使用abstract和static同时修饰一个方法时会发现编译器报错,原因在哪里呢?       因为static修饰的方法是静态方法,其可以直接被类所调用。而abstract修饰的方法为抽象方法,即无方法体的方法,不能够被直接调用,需要在子类或实现类中去编写完整的方法处理逻辑后才能使用。       由此看来,static和abstract不能同时出现修饰一个方法就是可以理解的了。
abstract为何不能与final,private,static同时出现
abstract 修饰的类,必须被继承;abstract 修饰的方法,应被重写。 final 修饰的类、属性、方法不可被更改,所以final 修饰的方法不可以被重写。 private 修饰的类只能是内部类,private 修饰的属性、方法只能在本类中调用,重写的方法无法访问这些方法和属性。 static 修饰的方法是静态的,可以直接被类所调用,但是abstract 修饰的方法抽象方法,没有方...
Abstract与哪些关键字不能共存,为什么?
  Finally:abstract修饰的类继承后,该类的方法需要重写,而finally修饰的类不能继承,也不能有子类,方法更不能重写,相互冲突。Private:方法子类的方法不能被继承,就不能被重写,而abstract就是要方法重写。相互冲突。Static:static能被实例化可直接调用,abstract是不能被实例化,相互冲突。...
java:面向对象(abstract不能与那些关键字同时使用注意事项)
/* * abstract不能和那些关键字共存? * * abstract和static * * 被abstract修饰的方法没有方法体 * * 被static修饰的方法可以用类名.调用,但是类名.调用抽象方法是没有意义的 * * abstract和Final * * 被abstract修饰的方法强制子类重写 * * 被final的修饰方法不让子类重写为最终,所以他俩矛盾...
EditText自定义监听方法实现onFocusChanged的监听
有一定开发经验的程序员知道,EditText控件位于一个Activity的布局最上方时,当EditText实现onFocusChanged的监听方法时, 程序运行的时候,输入光标会自动定位到EditText控件中,这时会触发onFocusChanged监听,执行里面的方法。这会导致一些麻烦(例如空指针)。针对这种情况该怎样解决呢?下面的一个例子利用继承和接口回调实现了onFocusChanged
ORACLE 错误一览表(4)
ORA-13401: 不受支持的 geoimage 格式 ORA-13402: NULL 目标 ORA-13403: NULL 源几何结构 ORA-13404: 不是本地源 ORA-13405: NULL 源 ORA-13406: 不受支持的图象处理命令 [] ORA-13407: 不受认可的空间类型限定词 [] ORA-13408: NULL 表名 ORA-13409: Oracle 表 "" ...
关于abstract为什么不能和static连用
被static修饰的方法在和没有static修饰的方法在内存中的位置不一样。。 被static修饰的方法属于类,是类自己的东西,不是给子类来继承的。就好像类是个房子,它的静态方法是里面的一面墙,每个人都可已在墙上画画,你画的东西别人也能看到,属于大家共同使用。你想通过继承来把这面墙拿走也不可能拿走,他是从属于类的。 而抽象方法本身没有实现,就是用来给子类继承,存在内存中的位置也不是一样的。用s
【SpringBoot】springboot异步(Async)方法注意事项!!!
在测试springboot的@Async异步注解时,调用方法和被调用方法在一个类中,异步并没有执行! 翻阅文档后发现,在同一个类中,方法调用关系是在同一类体的,Spring无法截获这个方法调用。 将被调用方法移到另一类中时,异步执行!...
inline和override的注意点
c++中对inline的限制: 1、不能存在任何形式的循环语句 2、不能存在过多的条件判断语句 3、函数体不能过于庞大 4、不能对函数进行取址操作 5、函数内联声明必须在调用语句之前c++判断override标准: 1、参数个数不同 2、参数类型不同 3、参数顺序不同 PS:返回值类型不是重载的判断标准
SQL 函数
SQL 拥有很多可用于计数和计算的内建函数。 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是: Aggregate 函数 Sc
ListView中的条目获取焦点时更换背景
在listview某一项获取焦点时更换当前条目的背景颜色前提有两个:listview中的item不能设置background,否则view不会显示出来 listview不能设置focuseable(false),否则,listView不能显示出来。 实现方式有两种1,设置,selectorlistView.setSelector();2,设置onItemSelectedListener然后再onIt
ViewFlipper的功能和用法
ViewFlipper组件继承了ViewAnimator,它可以调用addView(View v)添加多个组件向ViewFlipper中添加多个组件之后,ViewFlipper可使用动画控制多个组件之间的切换效果 ViewAnimator是一个基类,它继承的是FrameLayout,因此可以将多个View组件“叠加”在一起,ViewAnimator额外增加的功能就是可以在View切换时表现出动画
Android Toast在子线程中为什么无法正常使用
通过android Toast,Looper,ActivityThread的源码分析,在子线程中Toast提示失效的原因,并加上解决办法。
abstract、final、static、private是否能一起使用?为什么?
abstract、final、static、private是否能一起使用?为什么? 抽象 abstract: abstract修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员,抽象方法是没有方法体的方法。 (1)用abstract关键字修饰的方法是抽象方法,抽象方法无需实现。 例: abstract class Test { public void a() { /...
方法参数Param、out、ref关键字
params关键字 params关键字是可以指定在参数数目可变处,采用参数的方法参数, params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候。 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 关于参数数组,需掌握以下几点。    (1)若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后;    ...
android线程启动方法源代码
android线程启动方法源代码 本例子实现了android中线程启动的方法 有助于初学者学习
private、static、final、abstract关键字之间的关联
一、abstract可不可以 与 final private static共存?         1.abstract 和 static 不能一起使用                因为static修饰的成员方法多了一种调用方式: 类型.成员名   。静态(static)与类有关和对象无关,调用抽象方法并不存在实际意义,所以两者不能一起使用。         2.abstract 和 fin...
为什么只能在主线程中操作UI?为什么子线程中setText不报错?
今天偶然看到之前写过的代码,在activity中创建了一个子线程,然后在子线程中给TextView设置了文字。想到了Android基础原理:只能在主线程中操作UI。这不是矛盾吗?然后就去翻书查资料、看源码,得出了一些结论。 1.为什么只能在主线程中操作UI? 先看源码: View 在对View的操作中,会调用到 invalidate,然后又会调用到 View 的  invalida
android AutoCompleteTextView 的 setAdapter方法的坑! 设置进去不显示! 都是泪啊
AutoCompleteTextView 就是输入账号密码可以自动补全的那个功能,android 给你封装好了, 网上看教程之后 就是setAdapter 不进去 auto.setAdapter(adapter); Log.d(TAG, "setAdapter"); auto.setDropDownHeight(1500); auto.set...
去掉* 后,就不报错:向变量赋值的 SELECT 语句不能与数据检索操作结合使用
去掉* 后,就不报错:向变量赋值的 SELECT 语句不能与数据检索操作结合使用
Android为什么在非UI线程中进行UI操作而不报错
一般而言,android中相关的view和控件不是线程安全的,Android会禁止在非UI线程更新UI,对于显式的非法操作,比如说直接在Activity里创建子线程,然后直接在子线程中操作UI等,Android会直接异常退出,并提示should run on UIThread之类的错误日志信息。而对于隐式的非法操作,App不会直接简单粗暴地异常退出,只是出现奇怪的结果,Only the origi...
Service+AIDL牛刀小试,实现应用间通信
Service+AIDL实现进程间通信的具体实现的步骤介绍
android 线程与handler的简单使用(一)
//创建线程 class MyThand extends Thread{ @Override public void run() { super.run(); try { while (true) { sleep(3000); ...
ThreadLocal 变量和 与线程池配合使用时可能会出现的问题
ThreadLocal 变量和 与线程池配合使用时可能会出现的问题 ThreadLocal 的介绍和使用 先看下ThreadLocal变量的使用 public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map...
Android开发之在子线程中使用Toast
在子线程中使用Toast的时候,出现Force close。 错误提示:Can't create handler inside thread that has not called Looper.prepare() 解决方法: 在Toast.makeText().show()方法前面添加Looper.prepare(); 在Toast.makeText().Show()方法后面添加Loop
Android线程结束——合理的结束你想结束的线程
线程是你在Android中避不开的一个话题。 因为Android后期版本对主线程不允许运行耗时操作的规定,你新开线程的几率比起java,大大的提升了。 这样就会碰到一个问题,当你开启线程,在线程没有运行完的时候,想要结束这个线程,要怎么操作呢? 标志位结束线程 这是一种我们很容易理解的结束方式。设置一个标志位,当你想要结束线程的时候,就把这个标志位的状态改变。 直接看代码,更容易理解:
JAVA abstract不能与哪些关键字共存
1.static 被abstract修饰的方法没有方法体 被abstract修饰的方法可以用 类名.方法 调用,但是这样调用抽象方法是没有意义的 2.final 被abstract修饰的方法强制子类重写 被final修饰的方法不让子类重写 3.private 被abstract修饰的目的是为了让子类看到并强制重写 被private修饰不让子类访问 ...
abstract浅谈及与哪些关键字不能共存(java)
  首先解释下abstract,abstract(抽象)可以修饰类、方法。   abstract修饰类时代表这个类为抽象类,即这个类不能被实例化,那么它有什么用呢,即被继承(实际上这也是它最主要的作用),抽象类中可以不含抽象方法。   abstract也可以修饰方法,此时该方法为抽象方法,它不需要实现(事实上也无法对此方法在抽象类内进行实现),如这种public abstract void...
线程执行start方法的顺序并不代表线程的启动顺序
package com.freeflying.thread.base; /** * @ClassName: TestVisitSeqByStart * @Description:测试线程执行start方法的顺序并不代表线程的启动顺序 * @author freeflying * @date 2018年6月21日 */ public class TestVisitSeqByStart ...
java的构造方法能不能与普通对象方法同名
java中的构造方法可以有很多,可以带参数也可以不带参数,但是也可以显式指定构造方法, 那么普通的方法可不可以和构造方法同名呢? 答案是可以,比如以下的代码。MethodName 的构造方法就和一个普通类方法同名而且参数列表相同。但是编译器不会建议我们这么做。它会给我们一个警告。package hello;class MethodName{ private int i; publi
Android开发中Thread线程的基本使用(总结)
线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个进程中才能执行,线程由程序负责管理,而进程则由系统进行调度!多线程的理解:并行执行多个条指令,将CPU时间片按照调度算法分配给各个线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉到"同时"而已!线程的生命周期:(下图借于code_pig大神,总结的很好,大家一起学习)创建线程的三种方式:继承Thread类:新建一个类继承...