Context
Our app shows an HTML flashcard to the user.
We have added several layers of "filters" to satisfy different groups of users:
- To satisfy chess enthusiasts, we convert any
{FEN:rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2}
block to an HTML table representing a chess board with pieces at the right position - To satisfy Chinese language learners, we convert
字
to<ruby>字<rt>zì</rt></ruby>
- ...
Original HTML → Chess transformation → Chinese transformation → ... → Final HTML to display
Problem
The number of filters is growing, leading to problems:
- Slower rendition
- Heavier download
- Bigger source code to maintain
- More bugs/crashes
- Maintenance burden
Question
So, we would like to make these separately installable apps.
For instance, a chess+Chinese enthusiast would install 3 apps:
- TheApp
- TheApp Chess plugin
- TheApp Chinese plugin
TheApp would automatically discover what plugins are installed, and call them in turn (order does not matter).
I was thinking of using an intent THEAPPTRANSFORM
, but how can I receive the list of apps that have an <intent-filter>
for THEAPPTRANSFORM
, and call them all in turn?
Speed is a major requirement. I have read that Intents are 10+ times slower than direct calls... would Parcelable help here?
If impossible, is there any other solution?