Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
LatinIME
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
keyboard
LatinIME
Commits
94759249
Commit
94759249
authored
11 years ago
by
Satoshi Kataoka
Committed by
Android Git Automerger
11 years ago
Browse files
Options
Downloads
Plain Diff
am
f068c6e6
: Merge "Low memory mode in UserHistory"
* commit '
f068c6e6
': Low memory mode in UserHistory
parents
1a46424d
f068c6e6
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
java/src/com/android/inputmethod/latin/personalization/DynamicPersonalizationDictionaryWriter.java
+24
-7
24 additions, 7 deletions
...rsonalization/DynamicPersonalizationDictionaryWriter.java
with
24 additions
and
7 deletions
java/src/com/android/inputmethod/latin/personalization/DynamicPersonalizationDictionaryWriter.java
+
24
−
7
View file @
94759249
...
...
@@ -19,6 +19,7 @@ package com.android.inputmethod.latin.personalization;
import
android.content.Context
;
import
com.android.inputmethod.annotations.UsedForTesting
;
import
com.android.inputmethod.compat.ActivityManagerCompatUtils
;
import
com.android.inputmethod.keyboard.ProximityInfo
;
import
com.android.inputmethod.latin.AbstractDictionaryWriter
;
import
com.android.inputmethod.latin.ExpandableDictionary
;
...
...
@@ -41,7 +42,8 @@ import java.util.ArrayList;
public
class
DynamicPersonalizationDictionaryWriter
extends
AbstractDictionaryWriter
{
private
static
final
String
TAG
=
DynamicPersonalizationDictionaryWriter
.
class
.
getSimpleName
();
/** Maximum number of pairs. Pruning will start when databases goes above this number. */
public
static
final
int
MAX_HISTORY_BIGRAMS
=
10000
;
public
static
final
int
DEFAULT_MAX_HISTORY_BIGRAMS
=
10000
;
public
static
final
int
LOW_MEMORY_MAX_HISTORY_BIGRAMS
=
2000
;
/** Any pair being typed or picked */
private
static
final
int
FREQUENCY_FOR_TYPED
=
2
;
...
...
@@ -53,10 +55,14 @@ public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWr
private
final
UserHistoryDictionaryBigramList
mBigramList
=
new
UserHistoryDictionaryBigramList
();
private
final
ExpandableDictionary
mExpandableDictionary
;
private
final
int
mMaxHistoryBigrams
;
public
DynamicPersonalizationDictionaryWriter
(
final
Context
context
,
final
String
dictType
)
{
super
(
context
,
dictType
);
mExpandableDictionary
=
new
ExpandableDictionary
(
dictType
);
final
boolean
isLowRamDevice
=
ActivityManagerCompatUtils
.
isLowRamDevice
(
context
);
mMaxHistoryBigrams
=
isLowRamDevice
?
LOW_MEMORY_MAX_HISTORY_BIGRAMS
:
DEFAULT_MAX_HISTORY_BIGRAMS
;
}
@Override
...
...
@@ -72,6 +78,10 @@ public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWr
@Override
public
void
addUnigramWord
(
final
String
word
,
final
String
shortcutTarget
,
final
int
frequency
,
final
boolean
isNotAWord
)
{
if
(
mBigramList
.
size
()
>
mMaxHistoryBigrams
*
2
)
{
// Too many entries: just stop adding new vocabrary and wait next refresh.
return
;
}
mExpandableDictionary
.
addWord
(
word
,
shortcutTarget
,
frequency
);
mBigramList
.
addBigram
(
null
,
word
,
(
byte
)
frequency
);
}
...
...
@@ -79,6 +89,10 @@ public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWr
@Override
public
void
addBigramWords
(
final
String
word0
,
final
String
word1
,
final
int
frequency
,
final
boolean
isValid
,
final
long
lastModifiedTime
)
{
if
(
mBigramList
.
size
()
>
mMaxHistoryBigrams
*
2
)
{
// Too many entries: just stop adding new vocabrary and wait next refresh.
return
;
}
if
(
lastModifiedTime
>
0
)
{
mExpandableDictionary
.
setBigramAndGetFrequency
(
word0
,
word1
,
new
ForgettingCurveParams
(
frequency
,
System
.
currentTimeMillis
(),
...
...
@@ -102,19 +116,22 @@ public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWr
protected
void
writeDictionary
(
final
DictEncoder
dictEncoder
)
throws
IOException
,
UnsupportedFormatException
{
UserHistoryDictIOUtils
.
writeDictionary
(
dictEncoder
,
new
FrequencyProvider
(
mBigramList
,
mExpandableDictionary
)
,
mBigram
List
,
FORMAT_OPTIONS
);
new
FrequencyProvider
(
mBigramList
,
mExpandableDictionary
,
m
MaxHistory
Bigram
s
)
,
mBigramList
,
FORMAT_OPTIONS
);
}
private
static
class
FrequencyProvider
implements
BigramDictionaryInterface
{
final
private
UserHistoryDictionaryBigramList
mBigramList
;
final
private
ExpandableDictionary
mExpandableDictionary
;
private
final
UserHistoryDictionaryBigramList
mBigramList
;
private
final
ExpandableDictionary
mExpandableDictionary
;
private
final
int
mMaxHistoryBigrams
;
public
FrequencyProvider
(
final
UserHistoryDictionaryBigramList
bigramList
,
final
ExpandableDictionary
expandableDictionary
)
{
final
ExpandableDictionary
expandableDictionary
,
final
int
maxHistoryBigrams
)
{
mBigramList
=
bigramList
;
mExpandableDictionary
=
expandableDictionary
;
mMaxHistoryBigrams
=
maxHistoryBigrams
;
}
@Override
public
int
getFrequency
(
final
String
word0
,
final
String
word1
)
{
final
int
freq
;
...
...
@@ -130,7 +147,7 @@ public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWr
if
(
prevFc
>
0
&&
prevFc
==
fc
)
{
freq
=
fc
&
0xFF
;
}
else
if
(
UserHistoryForgettingCurveUtils
.
needsToSave
(
fc
,
isValid
,
mBigramList
.
size
()
<=
MAX_HISTORY_BIGRAMS
))
{
needsToSave
(
fc
,
isValid
,
mBigramList
.
size
()
<=
mMaxHistoryBigrams
))
{
freq
=
fc
&
0xFF
;
}
else
{
// Delete this entry
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment