小绵羊_小绵羊

小绵羊_小绵羊 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

小绵羊_小绵羊 赞了回答 · 2017-02-26

解决菜鸟对于 handler发送msg的疑问。

从源码看
先是sendEmptyMessage(int what)

    public final boolean sendEmptyMessage(int what)
    {
        return sendEmptyMessageDelayed(what, 0);
    }

再点进sendEmptyMessageDelayed(what, 0)

    /**
     * Sends a Message containing only the what value, to be delivered
     * after the specified amount of time elapses.
     * @see #sendMessageDelayed(android.os.Message, long) 
     * 
     * @return Returns true if the message was successfully placed in to the 
     *         message queue.  Returns false on failure, usually because the
     *         looper processing the message queue is exiting.
     */
    public final boolean sendEmptyMessageDelayed(int what, long delayMillis) {
        Message msg = Message.obtain();
        msg.what = what;
        return sendMessageDelayed(msg, delayMillis);
    }

sendEmptyMessageDelayed(int what, long delayMillis)方法中
可以看到what参数赋给了obtain出来的Message对象


再从obtainMessage(1,data)的源码中看

    /**
     * 
     * Same as {@link #obtainMessage()}, except that it also sets the what and obj members 
     * of the returned Message.
     * 
     * @param what Value to assign to the returned Message.what field.
     * @param obj Value to assign to the returned Message.obj field.
     * @return A Message from the global message pool.
     */
    public final Message obtainMessage(int what, Object obj)
    {
        return Message.obtain(this, what, obj);
    }

方法返回Message.obtain(this, what, obj),接着继续看obtain(this, what, obj)

    public static Message obtain(Handler h, int what, Object obj) {
        Message m = obtain();
        m.target = h;
        m.what = what;
        m.obj = obj;

        return m;
    }

方法里面Message也是通过obtain来获取的,不过这里还将obj对象赋给了Message。
sendToTarget()的源码中的target是Handler,就是调用了sendMessage()方法

    /**
     * Sends this Message to the Handler specified by {@link #getTarget}.
     * Throws a null pointer exception if this field has not been set.
     */
    public void sendToTarget() {
        target.sendMessage(this);
    }
    public final boolean sendMessage(Message msg)
    {
        return sendMessageDelayed(msg, 0);
    }

sendEmptyMessage(int what)obtainMessage(int what, Object obj).sendToTarget()
最大的不同就是没有了Object这个对象

参考:
Handler 的sendEmptyMessage(int what)和sendMessage(Message msg)有啥区别?
Handler sendMessage 与 obtainMessage (sendToTarget)比较

关注 5 回答 4

小绵羊_小绵羊 回答了问题 · 2016-07-28

解决求助一个Android控件名称

应该是自己用shape做的.直接填充进去的

关注 4 回答 3

小绵羊_小绵羊 关注了问题 · 2016-07-28

解决求助一个Android控件名称

最左边的圆形控件是什么?
怎么实现?
图片描述

关注 4 回答 3

小绵羊_小绵羊 赞了回答 · 2016-07-27

使用eclipse做的android新闻客户端时出现的问题

通过终端找到自己的ip地址,将localhost改成本地ip地址,同时在后面加上端口号
http://ip地址:端口/news.xml android方面加上网络访问权限

关注 4 回答 3

小绵羊_小绵羊 回答了问题 · 2016-07-27

解决Android 数据量很大的时候,如何提高UI的加载效率

分页加载可以不

关注 9 回答 8

小绵羊_小绵羊 关注了问题 · 2016-07-27

解决Android 数据量很大的时候,如何提高UI的加载效率

Android 数据量很大的时候,如何提高UI的加载效率

关注 9 回答 8

小绵羊_小绵羊 回答了问题 · 2016-07-26

解决为View添加onClicklistener没有生效

看不到sss的哪个id显示

关注 5 回答 3

小绵羊_小绵羊 关注了问题 · 2016-07-26

解决为View添加onClicklistener没有生效

问题是这样的,我说下我的app大致流程:
1、自定义1个layout;
2、activity inflate这个layout
3、为这个layout addView一个view;
4、为这个view添加onClickLister;
马蛋,没有生效!!!
这是为什么呢??难道手动addView进去的childView点击事件无效??
我在xml里面静态的包含这个View,click也是不行。。。

我这个view的xml是这样的:
<FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="96dp"
android:layout_marginTop="0dp"
android:background="#ce93d8"
android:clickable="true"
xmlns:tools="http://schemas.android.com/tools">

<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:foreground="?attr/selectableItemBackground"
    tools:ignore="UselessParent">

    <TextView
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="top|left"
        android:layout_marginLeft="40dp"
        android:layout_marginRight="40dp"
        android:gravity="center"/>
</FrameLayout>

</FrameLayout>

我的静态代码是这样的:

    vvv = findViewById(R.id.sss);
    vvv.setClickable(true);
    vvv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MyLod.log("in activity,cao on click!!!");
        }
    });
    
    

求大神帮忙,跪谢

关注 5 回答 3

小绵羊_小绵羊 关注了问题 · 2016-07-23

解决在android布局文件中给一个LinearLayout包裹的TextView绘制分割线?

该布局如图所示,或者不绘制分割线,只要能突出TextView就行!图片描述

关注 4 回答 4

小绵羊_小绵羊 回答了问题 · 2016-07-23

解决在android布局文件中给一个LinearLayout包裹的TextView绘制分割线?

我们一般就是用view画线的宽度给个0.5dp即可

关注 4 回答 4

认证与成就

  • 获得 0 次点赞
  • 获得 3 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 3 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2016-05-10
个人主页被 192 人浏览