Fix confusing Log.e message in SpellCheckerSession
With this CL, calling SpellCheckerSession#close() multiple times will
no longer show the following error message in logcat, which was quite
confusing.
E SpellCheckerSession: ignoring processOrEnqueueTask due to
unexpected mState=TASK_CLOSE scp.mWhat=TASK_CLOSE
Note that with a recent CL [1], we now more often see the above
message. A typical scenario is:
1. App creates SpellCheckerSession x.
2. App calls x.close().
3. x is garbage-collected. ART calls x.finalize(), which internally
calls x.close() again.
[1]: I4e00c3a2cec93d1dacff20546e481fe757279661
9b64367193
Bug: 72974646
Fix: 72974646
Test: Made sure that no error message in question with a test app
that calls SpellCheckerSession#close() multiple times then
trigger SpellCheckerSession#finalize().
Change-Id: Ie9690860e6d0406dc6746cd03c28f693e65c1dde
This commit is contained in:
@@ -445,9 +445,15 @@ public class SpellCheckerSession {
|
||||
private void processOrEnqueueTask(SpellCheckerParams scp) {
|
||||
ISpellCheckerSession session;
|
||||
synchronized (this) {
|
||||
if (scp.mWhat == TASK_CLOSE && (mState == STATE_CLOSED_AFTER_CONNECTION
|
||||
|| mState == STATE_CLOSED_BEFORE_CONNECTION)) {
|
||||
// It is OK to call SpellCheckerSession#close() multiple times.
|
||||
// Don't output confusing/misleading warning messages.
|
||||
return;
|
||||
}
|
||||
if (mState != STATE_WAIT_CONNECTION && mState != STATE_CONNECTED) {
|
||||
Log.e(TAG, "ignoring processOrEnqueueTask due to unexpected mState="
|
||||
+ taskToString(scp.mWhat)
|
||||
+ stateToString(mState)
|
||||
+ " scp.mWhat=" + taskToString(scp.mWhat));
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user