AntsyLich c46317f099 Move blocking work off the main thread and fix threading races (#4068)
* Defer startup work until first use

* Move cover work off the main thread

* Make tracker calls main-safe and token refresh thread-safe

Kitsu, Shikimori and MangaBaka refresh their token under a lock like
MAL, so parallel calls no longer refresh it twice.

* Fix extension threading and make installs cancellable

The store service read response bodies on Main, which failed with
NetworkOnMainThreadException for http stores.

* Move reader work off the main thread and save progress in order

* Serialize the downloader and fix download threading

* Stop blocking on WorkManager status queries

Also removes NotificationReceiver's open chapter action: nothing sends
it, and its handler used runBlocking.

* Start migration jobs on the migrator's dispatcher

They started undispatched, so each ran on the caller's thread until its
first suspension.

* Run screen and view model work on fitting dispatchers

* Launch work that outlives a screen on the app scope

A launch on another dispatcher is dropped if the screen closes before it
starts, which dialogs that dismiss right away often do. Only the UI
follow-up stays on viewModelScope.

* Remove the coroutine helper extensions

They hid which dispatcher and scope a call used, and the GlobalScope
ones hid that it was global.
2026-10-10 17:08:49 +00:00
2026-10-10 06:38:43 +00:00
2024-12-06 23:03:00 +06:00
2026-10-10 17:37:44 +06:00
2020-01-11 16:13:08 -05:00
2026-06-17 02:40:35 +06:00
2026-08-16 18:47:48 +00:00
2024-08-19 12:51:37 +06:00
2026-06-19 13:08:20 +06:00
2026-06-19 13:08:20 +06:00

Mihon logo

Mihon App

Discover and read manga, webtoons, comics, and more – easier than ever on your Android device.

Discord server GitHub downloads

CI License: Apache-2.0 Translation status

Download

Mihon Stable Mihon Beta

Requires Android 8.0 or higher.

Features

  • Local reading of content.
  • A configurable reader with multiple viewers, reading directions and other settings.
  • Tracker support: MangaBaka, MyAnimeList, AniList, Kitsu, MangaUpdates, Shikimori, Bangumi, and Hikka support.
  • Categories to organize your library.
  • Light and dark themes.
  • Schedule updating your library for new chapters.
  • Create backups locally to read offline or to your desired cloud service.
  • Plus much more...

Contributing

Code of conduct · Contributing guide

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Before reporting a new issue, take a look at the FAQ, the changelog and the already opened issues; if you got any questions, join our Discord server.

Repositories

mihonapp/website - GitHub mihonapp/bitmap.kt - GitHub

Credits

Thank you to all the people who have contributed!

Mihon app contributors

Disclaimer

The developer(s) of this application does not have any affiliation with the content providers available, and this application hosts zero content.

License

Copyright © 2015 Javier Tomás
Copyright © 2024 Mihon Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Languages
Kotlin 100%