message_messagebox - CSDN
精华内容
参与话题
  • Message详解

    2018-10-27 21:53:01
    Message详解   每个部分都有可以表现为字节序列的内容。例如,在简单电子邮件消息的部分中,内容是消息的主体。但是在多部分消息中,内容本身可以包含其他部分。 读取部分内容 Part接口声明了两个可以确定部分...

                                                           Message详解


     

    每个部分都有可以表现为字节序列的内容。例如,在简单电子邮件消息的部分中,内容是消息的主体。但是在多部分消息中,内容本身可以包含其他部分。

    读取部分内容

    Part接口声明了两个可以确定部分的MIME内容类型的方法。

    getContentType()

    isMimeType(String mimeType)

    1.当得到一个Message对象时,调用它的getSubject(),getFrom()等等方法,可以得到邮件的基本信息。

    2.调用Message.getContentType()方法来判断邮件的类型

    (1)如果邮件类型是“text/plain”或者“text/html”,说明邮件

    是纯文本,可以调用getContent()来获取邮件内容并加以显示。


     

    (2)如果邮件类型是“multipart/*”,表示邮件类型是复合类型,此时需将邮件的getContent()方法返回的对象

    转换成Multipart。

    3.调用Multipart的getCount()方法来检测Multipart中包含多少BodyPart对象,通过循环取出每个BodyPart对象

    在处理每个BodyPart对象时,调用它的getContent()方法确定它的类型,有三种情况:

    (1)当其类型是”text/*“表示是纯文本

    (2)当其类型是”multipart/*“需要重复2.(2)->3步骤

    (3)当其表示图片,音频等二进制内容时,可以调用getInputStream()获取原始的二进制内容。

    写入部分内容

    setText(String text)

    setContent(Object o,String type)

    writeTo(OutputStream out)

    之前的文章发送电子邮件,只是发送的简单文本而已,这对于现在的电子邮件客户端而言,是非常简单的;在创建复杂邮件之前,先要弄明白一些概念:

    1.MimeMessage :继承Message,表示整封邮件

    2.MimeBodyPart:表示邮件的一个MIME消息

    3.MimeMultipart:表示一个由多个MIME消息组合成的组合MIME消息。

    故:

    1.复杂邮件和简单文本邮件一样,都是有MimeMesage表示的

    2.对于复杂邮件,不能简单的用MimeMessage.setText 方法生成,而是要将MimeMultipart对象设置到MimeMessage对象中

    3.MimeMultipart 用来组合一个或者多个MimeBodyPart对象,其中每个MimeBodyPart对象使用MimeMultipart.addBodyPart(BodyPart part)方法

    将一个MIME消息添加到MimeMultipart对象中

    4.MimeBodyPart 对象表示的MIME消息,可能还是一个MIME组合消息,那么它的内容就需要使用一个MimeMultipart表示,这一步只是重复上述步骤而已。

    可见,不管邮件体重的数据层次关系多么复杂,我们都可以用MimeBodyPart和MimeMultipart对象的这种相互嵌套关系,来组织并封装复杂邮件。

    展开全文
  • 获取Message实例的方法: 这种方法很常见,就是常见的创建对象的方式。每次需要Message对象的时候都创建一个新的对象,每次都要去堆内存开辟对象存储空间,对象使用完后,jvm又要去对这个废弃的对象进行垃圾回收。 ...

    获取Message实例的方法:

     这种方法很常见,就是常见的创建对象的方式。每次需要Message对象的时候都创建一个新的对象,每次都要去堆内存开辟对象存储空间,对象使用完后,jvm又要去对这个废弃的对象进行垃圾回收。

    • new Message() 

     

    • handler.obtainMessage() 
    • Message.obtain()  

    通过obtain方法获取Message对象的详情。通过obtain方法获取Message对象使得Message到了重复的利用,减少了每次获取Message时去申请空间的时间。同时,这样也不会永无止境的去创建新对象,减小了Jvm垃圾回收的压力,提高了效率。

    具体需要从源码中查看。

    展开全文
  • Message的参数和方法

    千次阅读 2016-01-26 09:47:37
    public int arg1 如果只需要存储几个整型数据,arg1 和 arg2是setData()的低成本替代品。   public int arg2 如果只需要存储几个整型数据,arg1 和 arg2是...当使用Message对象在线程间传递消息时,如果它

    public int arg1

    如果只需要存储几个整型数据,arg1  arg2setData()的低成本替代品。

     

    public int arg2

    如果只需要存储几个整型数据,arg1  arg2setData()的低成本替代品。

     

    public Object obj

    发送给接收器的任意对象。当使用Message对象在线程间传递消息时,如果它包含一个Parcelable的结构类(不是由应用程序实现的类),此字段必须为非空(non-null)。其他的数据传输则使用setData(Bundle)方法。

    注意Parcelable对象是从FROYO版本以后才开始支持的。

     

    public Messenger replyTo

    指明此message发送到何处的可选Messenger对象。具体的使用方法由发送者和接受者决定。

     

    public int what

    用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。

     

    公共构造器

      public      Message()       

      构造器(但是获取Message对象的最好方法是调用Message.obtain())。

     

    公共方法

    public void copyFrom (Message o)

    使此message跟参数o相似。浅拷贝数据域。不拷贝源message的链表字段,时间戳和目标/回调。

     

    public int describeContents ()

    描述了包含在Parcelable对象排列信息中的特殊对象的类型。

    返回值

             一个标志位,表明Parcelable对象特殊对象类型集合的排列。

     

    public Runnable getCallback ()

    获取回调对象,此对象会在message处理时执行。此对象必须实现Runnable接口。回调由接收此消息并分发的目标handler调用。如果没有设置回调,此消息会分发到接收handlerhandleMessage(Message)

     

    public Bundle getData ()

    获取附加在此事件上的任意数据的Bundle对象,需要时延迟创建。通过调用setData(Bundle)来设置Bundle的值。需要注意的是,如果通过Messenger对象在进程间传递数据时,需要调用Bundle类的Bundle.setClassLoader()方法来设置ClassLoader,这样当接收到消息时可以实例化Bundle里的对象。

             参考

                      peekData()

                      setData(Bundle)

     

    public Handler getTarget ()

    获取将接收此消息的Handler对象。此对象必须要实现Handler.handleMessage()方法。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。

     

    public long getWhen ()

    返回此消息的传输时间,以毫秒为单位。

     

    public static Message obtain (Handler h, int what, int arg1, int arg2, Object obj)

    obtain()一样,但是设置了target, what, arg1, arg2obj的值。

             参数

                       h                设置的target

                       what         设置的what

                       arg1          设置的arg1

                       arg2          设置的arg2

                       obj             设置的obj

             返回值

                       从全局池中分配的一个Message对象。

     

     

    public static Message obtain (Handler h)

    obtain()一样,但是设置了target的值

             参数

                       h                消息对象的target成员的值

             返回值

                       从全局池中分配的一个Message对象。

     

    public static Message obtain (Handler h, Runnable callback)

    obtain(Handler)一样,但是设置回调函数,在Message返回时调用。

             参数

                       h                消息对象的target成员的值

                       callback    当消息处理时会调用的回调函数

             返回值

                       从全局池中分配的一个Message对象。

     

    public static Message obtain ()

    从全局池中返回一个新的Message实例。在大多数情况下这样可以避免分配新的对象。

     

    public static Message obtain (Handler h, int what, int arg1, int arg2)

    obtain()一样,但是设置了target, what, arg1arg2的值

             参数

                       h                设置的targe

                       what         设置的what

                       arg1          设置的arg1

                       arg2          设置的arg2

             返回值

                       从全局池中分配的一个Message对象。

     

    public static Message obtain (Message obj)

    obtain(),但是从一个已存在的消息中拷贝值(包括它的目标)。

             参数

                       orig           要拷贝的源消息

             返回值

                       从全局池中分配的一个Message对象。

     

    public Bundle peekData ()

    getData()相似,但是并不延迟创建Bundle。如果Bundle对象不存在返回null。更多信息见getData()

             参考

                       getData()

                       setData(Bundle)

     

    public void recyle ()

    向全局池中返回一个Message实例。一定不能在调用此函数后再使用Message——它会立即被释放。

     

    public void sendToTarget ()

    Handler发送此消息,getTarget()方法可以获取此Handler。如果这个字段没有设置会抛出个空指针异常。

     

    public void setData (Bundle data)

    设置一个任意数据值的Bundle对象。如果可以,使用arg1arg2域发送一些整型值以减少消耗。

    参考

             getData()

             peekData()

     

    public void setTarget (Handler target)

    设置将接收此消息的Handler对象。

     

    public String toString ()

    返回一个Message对象简单的,可读懂的描述信息。鼓励子类重写此方法,实现时最好把对象的类型的数据考虑进去。默认的实现等同与以下表达式:

          

    如果需要实现toString方法,参考Writing a useful toString method

                       返回值

                                一个代表此对象的可打印字符串

     

    public void writeToParcel (Parcel dest, int flags)

    将类的数据写入外部提供的Parcel

    参数

                                dest   对象被写入的Parcel

                                flags 对象如何被写入的附加标志,可能是0PARCELABLE_WRITE_RETURN_VALUE

                      



    Message.obtain函数:有多个obtain函数,主要功能一样,只是参数不一样。作用是从Message Pool中取出一个Message,如果Message Pool中已经没有Message可取则新建一个Message返回,同时用对应的参数给得到的Message对象赋值。 

    Message Pool:大小为10个;通过Message.mPool->(Message并且Message.next)-> (Message并且Message.next)-> (Message并且Message.next)...构造一个Message Pool。Message Pool的第一个元素直接new出来,然后把Message.mPool(static类的static变量)指向它。其他的元素都是使用完的 Message通过Message的recycle函数清理后放到Message Pool(通过Message Pool最后一个Message的next指向需要回收的Message的方式实现)。下图为Message Pool的结构: 
     

    展开全文
  • Message的几种简单用法

    万次阅读 2017-03-18 10:21:36
    arg1和arg2是成本较低的替代品使用 setData(),如果你只需要存储一些整数值。 obj是任意对象发送给收件人。 what是用户定义的消息代码,以便收...Message msg = new Message(); msg.arg1 = 1; msg.arg2 = 2;

    arg1和arg2是成本较低的替代品使用 setData(),如果你只需要存储一些整数值。

    obj是任意对象发送给收件人。

    what是用户定义的消息代码,以便收件人能识别这条消息是关于什么的。

    方法一:

    使用构造器public Message();

    Message msg = new Message();
    msg.arg1 = 1;
    msg.arg2 = 2;
    msg.obj = 3;
    msg.what = 4;
    handle.sendMessage(msg);

    方法二:

    使用构造器public static Message obtain();

    Message msg = Message.obtain();

      msg.what=1;

      msg.arg1=2;

    msg.arg2=3;

    msg.obj=4;

    handler.sendMessage(msg);

       方法三:

       使用构造器public static Message obtain(Handler handler);

    Message msg = Message.obtain(handler);

    msg.what=1;

    msg.arg1=2;

    msg.arg2=3;

    msg.obj=4;

    msg.sendToTarget();

    方法四:

    使用构造器public static Message obtain(Handler handler, int what);

    Message msg = Message.obtain(handler, 1);

    msg.arg1=2;

    msg.arg2=3;

    msg.obj=4;

    msg.sendToTarget();

    方法五:

    使用构造器使用构造器public static Message obtain(Handler handler, int what , Object obj);

    Message msg = Message.obtain(handler, 1, 4);

    msg.arg1=2;

    msg.arg2=3;

    msg.sendToTarget();

    方法六:

    使用构造器public static Message obtain(Handler handler, int what, int arg1 , int arg2);

    Message msg = Message.obtain(handler, 1, 2 , 3);

    msg.obj=4;

    msg.sendToTarget();

    方法七:

    使用构造器public static Message obtain(Handler handler, int what, int arg1 , int arg2, Object obj);

    Message msg = Message.obtain(handler, 1, 2 , 3, 4);

    msg.sendToTarget();

    方法八:

    使用构造器public static Message obtain(Handler handler, int what, int arg1 , int arg2, Object obj);

    Message msg = Message.obtain(handler, 1, 2 , 3, 4);

    Bundle bundle = new Bundle();

    List<integer> list = new ArrayList<integer>();

    list.add(5);

    list.add(6);

    list.add(7);

    bundle.putIntegerArrayList("num",ArrayList<integer>list);

    msg.setData(bundle);

    msg.sendToTarget();






    展开全文
  • Message的用法

    千次阅读 2015-02-10 14:08:48
    1. MessageActivity代码: import android.app.Activity; import android.os.Bundle; import android.os....import android.os.Message; import android.view.Menu; import android.view.View; import android.w
  • PCIe中的Message

    千次阅读 2019-06-05 21:35:29
    PCIe中的Message主要是为了替代PCI中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的Message请求采用的都是4DW的TLP Header,但是并不是所有的空间都被利用上了,例如有的Message就没有...
  • Android中Message的基本使用

    千次阅读 2019-03-02 09:31:11
    什么是MessageMessage是封装了需要传递的数据交由Handler 处理的对象。 Message的作用: 用于存放传递的数据; 是主线程和子线程传递数据的载体 如何使用Message: 初始化Message对象: Message message= ...
  • vue消息提示this.$message方法

    万次阅读 2019-03-24 22:30:25
    //弹出信息 alertMessage(action,a){ var msg,type; switch(a){ case '1': type='success'; msg = ...
  • $message的问题

    2019-09-28 21:09:54
    项目中出现$message的问题:  拉取数据成功后 this.$message.success("数据拉取成功")点击拉取第一次不出现,但是代码执行了,后来多次点击就出现了 原因:  项目中头部导航部分的层级太高,遮住了message的...
  • 如何使用$.message

    万次阅读 2018-06-20 09:31:00
    jQueryEasyUI Messager基本使用一、jQueryEasyUI下载地址http://www.jeasyui.com/二、jQueryEasyUI Messager基本使用1、$.messager.alert(title, msg, icon, fn)1&gt;、基本用法代码:1234567891011121314151617...
  • message的6种类型

    万次阅读 2012-11-16 15:47:34
    message在ABAP程序中的使用方式: 1)message text type 'I'/'W'/'E'/'S'. 2) message ennn(z_msg) with text. 如果nnn消息中不包含变量,则无须with 3)在report开始的时候申明message-id = msg_id,在...
  • 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38377229 ,本文出自【张鸿洋的博客】很多人面试肯定都被问到过,请问Android中的Looper , Handler , Message有什么关系?本篇博客目的首先为...
  • Android的Message机制(简单小结)

    万次阅读 多人点赞 2012-06-15 21:49:52
    网上以文档形式流传,不知道原文在哪,感谢原作者了!...对于Android的Message机制主要涉及到三个主要的类,分别是Handler、Message、Looper;首先对每个类做一个简单介绍;然后再介绍所谓的Android的Messa
  • 1. 前言创建Message对象的时候,有三种方式,分别为: 1.Message msg = new Message(); 2.Message msg2 = Message.obtain(); 3.Message msg1 = handler1.obtainMessage(); 这三种方式有什么区别呢?2.使用...
  • Android多线程分析之四:MessageQueue的实现

    万次阅读 多人点赞 2014-07-14 17:32:08
    在前面两篇文章《Android多线程...run() 方法中创建和运行消息处理循环 Looper,而 Looper::loop() 方法不断地从 MessageQueue 中获取消息,并由 Handler 分发处理该消息。接下来就来介绍 MessageQueue 的运作机制,Mes
  • ACE_Message_Block功能和实现浅析

    千次阅读 2018-11-20 17:40:32
    ACE_Message_Block实现浅析 1. 概述 ACE_Message_Block是ACE中很重要的一个类,和ACE框架中的重要模式的实现 如ACE_Reactor, ACE_Proactor, ACE_Stream, ACE_Task都有紧密的联系. 换个角度看,ACE_Message_Block...
  • 痛点:你有没有因为手快就commit了,但是忘记修改了message?你是不是有时候觉得自己push过的记录,message写的不明确?这个时候,怎么办?2.修改已经commit但没有push的记录message2.1我现在有3次commit等待push,...
  • 项目中使用element-ui时,message弹框功能是必须使用的,有时会在点击按钮时提示无权限,或者请求报错时给出适当提示: 但是重复点击按钮或者同一个页面多个请求同时报错时,就不美观了 可以看到,element-...
  • 关于html5的PostMessage的用法总结

    万次阅读 2018-07-07 17:04:27
    大家都知道,网页直接传递数据可以使用ajax请求来完成,今天我总结下我学习的postMessage是如何完成跨页面请求数据的呢?首先,postMessage是html5新增的一个解决跨域的一个方法。那他是如何使用的呢?这里我把一个...
  • Git修改提交的Message信息

    千次阅读 2019-08-18 18:58:18
    在提交了本次修改之后,因为提交格式不对,你又想修改你上一次提交的git message信息,怎么办呢? 解决 修改最近一次提交的message 修改上一次提交的message信息,我们可以使用以下命令: git commit --amend 然后...
1 2 3 4 5 ... 20
收藏数 1,587,670
精华内容 635,068
关键字:

message