You can have multiple ‘‘conversations’’ with the same participant. So, if you start a chat and assign it a thread ID, you have a mechanisim to distinguish the different converstations.
If the chat wasn’‘t created with a thread ID, then filtering on that parameter won’'t make sense.
BTW, this logic has been improved for the next version of Smack. We now transparently track all the active Chat objects that are active with a user (using weak references). If a message comes in without a thread ID, Smack will automatically send it to the most recently created Chat with that user.
We’‘ve actually removed the setFilterOnThreadID method since it’‘s no longer needed. It’'s possible that we will deprecate and make it a no-op instead… still trying to balance out what the better approach is.