diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-22 07:12:46 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-22 07:12:46 +0000 |
commit | a8c6307fae854e21a66498aa3c1badd717ea375f (patch) | |
tree | 486fd87f04bcebb80b5a0dfdd7a798402b57fa94 | |
parent | 19e35d8c1152925cdfbb707bbb76d93bcb478d56 (diff) | |
parent | 7c41f88d017831fa89d2473063a881e3f54394e6 (diff) | |
download | android-security-oc-release.tar.gz |
release-request-767e2998-9243-43e0-b656-1acb30ac5115-for-git_oc-release-4124637 snap-temp-L74200000076595014android-security-8.0.0_r54android-security-8.0.0_r53android-security-8.0.0_r52android-cts-8.0_r9android-cts-8.0_r8android-cts-8.0_r7android-cts-8.0_r6android-cts-8.0_r5android-cts-8.0_r4android-cts-8.0_r3android-cts-8.0_r26android-cts-8.0_r25android-cts-8.0_r24android-cts-8.0_r23android-cts-8.0_r22android-cts-8.0_r21android-cts-8.0_r20android-cts-8.0_r2android-cts-8.0_r19android-cts-8.0_r18android-cts-8.0_r17android-cts-8.0_r16android-cts-8.0_r15android-cts-8.0_r14android-cts-8.0_r13android-cts-8.0_r12android-cts-8.0_r11android-cts-8.0_r10android-cts-8.0_r1android-8.0.0_r9android-8.0.0_r7android-8.0.0_r51android-8.0.0_r50android-8.0.0_r49android-8.0.0_r48android-8.0.0_r47android-8.0.0_r46android-8.0.0_r45android-8.0.0_r44android-8.0.0_r43android-8.0.0_r42android-8.0.0_r41android-8.0.0_r40android-8.0.0_r4android-8.0.0_r39android-8.0.0_r38android-8.0.0_r37android-8.0.0_r36android-8.0.0_r35android-8.0.0_r32android-8.0.0_r31android-8.0.0_r30android-8.0.0_r3android-8.0.0_r29android-8.0.0_r28android-8.0.0_r2android-8.0.0_r17android-8.0.0_r16android-8.0.0_r15android-8.0.0_r13android-8.0.0_r12android-8.0.0_r11android-8.0.0_r10android-8.0.0_r1security-oc-releaseoreo-security-releaseoreo-releaseoreo-r6-releaseoreo-r5-releaseoreo-r4-releaseoreo-r3-releaseoreo-r2-releaseoreo-cts-release
Change-Id: If3b194621624ca9b61f54704afab6b5cde68016c
-rw-r--r-- | wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java | 100 |
1 files changed, 87 insertions, 13 deletions
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java b/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java index b6e8f255..6c5f2a5e 100644 --- a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java +++ b/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java @@ -15,7 +15,9 @@ */ package com.example.android.wearable.wear.messaging.chat; +import android.content.Context; import android.content.Intent; +import android.os.AsyncTask; import android.os.Bundle; import android.speech.RecognizerIntent; import android.support.v4.content.ContextCompat; @@ -43,6 +45,9 @@ import com.example.android.wearable.wear.messaging.util.DividerItemDecoration; import com.example.android.wearable.wear.messaging.util.MenuTinter; import com.example.android.wearable.wear.messaging.util.PrescrollToBottom; import com.example.android.wearable.wear.messaging.util.SchedulerHelper; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; import java.util.UUID; /** @@ -67,6 +72,8 @@ public class ChatActivity extends GoogleSignedInActivity { private InputMethodManager mInputMethodManager; private Chat mChat; + private FindChatsAsyncTask mFindChatsTask; + private SendMessageAsyncTask mSendMessageTask; @Override protected void onCreate(Bundle savedInstanceState) { @@ -172,15 +179,21 @@ public class ChatActivity extends GoogleSignedInActivity { .getViewTreeObserver() .addOnPreDrawListener(new PrescrollToBottom(mRecyclerView, mAdapter)); - //TODO: move to background - mAdapter.addMessages(MockDatabase.getAllMessagesForChat(this, mChat.getId())); - // Displays welcome message if no messages in chat. - if (mAdapter.getItemCount() == 0) { - mRecyclerView.setVisibility(View.GONE); - mNoMessagesView.setVisibility(View.VISIBLE); - } else { - mRecyclerView.setVisibility(View.VISIBLE); - mNoMessagesView.setVisibility(View.GONE); + if (mFindChatsTask != null) { + mFindChatsTask.cancel(true); + } + mFindChatsTask = new FindChatsAsyncTask(this, mChat); + mFindChatsTask.execute(); + } + + @Override + protected void onPause() { + super.onPause(); + if (mFindChatsTask != null) { + mFindChatsTask.cancel(true); + } + if (mSendMessageTask != null) { + mSendMessageTask.cancel(true); } } @@ -226,10 +239,71 @@ public class ChatActivity extends GoogleSignedInActivity { } private void sendMessage(Message message) { - MockDatabase.saveMessage(this, mChat, message); - mAdapter.addMessage(message); - mRecyclerView.smoothScrollToPosition(mAdapter.getItemCount()); + if (mSendMessageTask != null) { + mSendMessageTask.cancel(true); + } + mSendMessageTask = new SendMessageAsyncTask(this, mChat); + mSendMessageTask.execute(message); + } + + class FindChatsAsyncTask extends AsyncTask<Void, Void, Collection<Message>> { + + final Context mContext; + final Chat mChat; - SchedulerHelper.scheduleMockNotification(this, mChat, message); + FindChatsAsyncTask(Context context, Chat chat) { + this.mContext = context; + this.mChat = chat; + } + + @Override + protected Collection<Message> doInBackground(Void... params) { + return MockDatabase.getAllMessagesForChat(mContext, mChat.getId()); + } + + @Override + protected void onPostExecute(Collection<Message> chats) { + super.onPostExecute(chats); + mAdapter.addMessages(chats); + // Displays welcome message if no messages in chat. + if (mAdapter.getItemCount() == 0) { + mRecyclerView.setVisibility(View.GONE); + mNoMessagesView.setVisibility(View.VISIBLE); + } else { + mRecyclerView.setVisibility(View.VISIBLE); + mNoMessagesView.setVisibility(View.GONE); + } + } + } + + class SendMessageAsyncTask extends AsyncTask<Message, Void, Message> { + + final Context mContext; + final Chat mChat; + + SendMessageAsyncTask(Context context, Chat chat) { + this.mContext = context; + this.mChat = chat; + } + + @Override + protected Message doInBackground(Message... params) { + List<Message> parameters = Arrays.asList(params); + if (parameters.isEmpty()) { + throw new IllegalArgumentException("Messages are required for sending."); + } + for (Message message : parameters) { + MockDatabase.saveMessage(mContext, mChat, message); + SchedulerHelper.scheduleMockNotification(mContext, mChat, message); + } + return parameters.get(parameters.size() - 1); + } + + @Override + protected void onPostExecute(Message message) { + super.onPostExecute(message); + mAdapter.addMessage(message); + mRecyclerView.smoothScrollToPosition(mAdapter.getItemCount()); + } } } |