Fix some of the StrictMode violations (#1931)
Mostly it's disk reads/writes. Conscrypt reads own version on startup which reads from disk multiple times. There's no solution for it right now. SharedPreferences which are used in BaseActivity also read from disk and pretty early but it shouldn't be a problem.
This commit is contained in:
parent
9ea2557148
commit
ef1ae581b4
|
@ -81,6 +81,7 @@ import com.uber.autodispose.android.lifecycle.autoDispose
|
||||||
import dagger.android.DispatchingAndroidInjector
|
import dagger.android.DispatchingAndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
import io.reactivex.schedulers.Schedulers
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -227,9 +228,11 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Schedulers.io().scheduleDirect {
|
||||||
// Flush old media that was cached for sharing
|
// Flush old media that was cached for sharing
|
||||||
deleteStaleCachedMedia(applicationContext.getExternalFilesDir("Tusky"))
|
deleteStaleCachedMedia(applicationContext.getExternalFilesDir("Tusky"))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
|
@ -25,11 +25,15 @@ import androidx.work.WorkManager
|
||||||
import com.keylesspalace.tusky.components.notifications.NotificationWorkerFactory
|
import com.keylesspalace.tusky.components.notifications.NotificationWorkerFactory
|
||||||
import com.keylesspalace.tusky.di.AppInjector
|
import com.keylesspalace.tusky.di.AppInjector
|
||||||
import com.keylesspalace.tusky.settings.PrefKeys
|
import com.keylesspalace.tusky.settings.PrefKeys
|
||||||
import com.keylesspalace.tusky.util.*
|
import com.keylesspalace.tusky.util.EmojiCompatFont
|
||||||
|
import com.keylesspalace.tusky.util.LocaleManager
|
||||||
|
import com.keylesspalace.tusky.util.ThemeUtils
|
||||||
import com.uber.autodispose.AutoDisposePlugins
|
import com.uber.autodispose.AutoDisposePlugins
|
||||||
|
import dagger.Lazy
|
||||||
import dagger.android.DispatchingAndroidInjector
|
import dagger.android.DispatchingAndroidInjector
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import io.reactivex.plugins.RxJavaPlugins
|
import io.reactivex.plugins.RxJavaPlugins
|
||||||
|
import io.reactivex.schedulers.Schedulers
|
||||||
import org.conscrypt.Conscrypt
|
import org.conscrypt.Conscrypt
|
||||||
import java.security.Security
|
import java.security.Security
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -38,11 +42,21 @@ class TuskyApplication : Application(), HasAndroidInjector {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var androidInjector: DispatchingAndroidInjector<Any>
|
lateinit var androidInjector: DispatchingAndroidInjector<Any>
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var notificationWorkerFactory: NotificationWorkerFactory
|
lateinit var notificationWorkerFactory: Lazy<NotificationWorkerFactory>
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
|
// Uncomment me to get StrictMode violation logs
|
||||||
|
// if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||||
|
// StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder()
|
||||||
|
// .detectDiskReads()
|
||||||
|
// .detectDiskWrites()
|
||||||
|
// .detectNetwork()
|
||||||
|
// .detectUnbufferedIo()
|
||||||
|
// .penaltyLog()
|
||||||
|
// .build())
|
||||||
|
// }
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|
||||||
Security.insertProviderAt(Conscrypt.newProvider(), 1)
|
Security.insertProviderAt(Conscrypt.newProvider(), 1)
|
||||||
|
@ -64,15 +78,18 @@ class TuskyApplication : Application(), HasAndroidInjector {
|
||||||
val theme = preferences.getString("appTheme", ThemeUtils.APP_THEME_DEFAULT)
|
val theme = preferences.getString("appTheme", ThemeUtils.APP_THEME_DEFAULT)
|
||||||
ThemeUtils.setAppNightMode(theme)
|
ThemeUtils.setAppNightMode(theme)
|
||||||
|
|
||||||
|
RxJavaPlugins.setErrorHandler {
|
||||||
|
Log.w("RxJava", "undeliverable exception", it)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This will initialize the whole network stack and cache so we don't wan to wait for it
|
||||||
|
Schedulers.computation().scheduleDirect {
|
||||||
WorkManager.initialize(
|
WorkManager.initialize(
|
||||||
this,
|
this,
|
||||||
androidx.work.Configuration.Builder()
|
androidx.work.Configuration.Builder()
|
||||||
.setWorkerFactory(notificationWorkerFactory)
|
.setWorkerFactory(notificationWorkerFactory.get())
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
|
|
||||||
RxJavaPlugins.setErrorHandler {
|
|
||||||
Log.w("RxJava", "undeliverable exception", it)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue