mshuaia 2014-12-11 07:11 采纳率: 100%
浏览 2424
已采纳

Android UI耗时问题处理

问题描述:UI中btn的一个响应有耗时操作,另起线程来执行,UI依然有卡顿

代码描述如下:
public class MyActivity extends Activity {

Button btnSend;
protected void onCreate(Bundle savedInstanceState) {
    .....
    btnSend=(Button) findViewById(R.id.btn_send);
    btnSend.setOnclickListener(mListener);
}

OnClickListener mListener=new new View.OnClickListener() {

        @Override
        public void onClick(View v) {
         new Thread(sendable).start();  
        }
}

Runnable sendable = new Runnable() {
    @Override
    public void run() {
        String data="data";
        sendRemote(data);
    }
}

/***因为具体的发送方法在服务里,所以此处传递消息给
****服务处理,发送函数是一个耗时操作,发送之后等待回复或等至超时***/
private void sendRemote(String strData){    
    Intent iSend=new Intent("send");    
    iSend.putExtra("data", msg);
    startService(iSend);
}

}
在这种情况下会有一个明显的卡顿,我的疑问是:
1、另起线程并没有完全将耗时程序从UI中剥离开来吗?
2、即使未剥离开,UI线程启动服务的操作也要一直等到 服务按要求启动并执行相应的步骤(此处为发送信息)之后才算完成吗?要不然也不应该卡顿啊

求高手指点,谢谢

  • 写回答

7条回答 默认 最新

  • 媒体盒子 2014-12-11 09:16
    关注

    问题比较明显,肯定不是出在你贴出来的代码中,请检查你启动的service的oncreate函数,看里面是不是做了耗时操作,
    service也是运行于UI线程,请在service的oncreate中创建thread做耗时操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题