diff options
author | zachh <zachh@google.com> | 2017-08-11 15:14:55 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-08-14 08:30:39 -0700 |
commit | 86d76510112dbd1349b3ab6797febebd179a725b (patch) | |
tree | c7bcf49ea3169ed92e38e9cda7fdc370889a82ee /java/com/android/dialer/storage/StorageComponent.java | |
parent | a30dd0f49b2bf63d292c90821c374be34755aeca (diff) |
Fixed some strict mode violations.
Many strict mode violations are due to use of shared preferences on main thread, so we now warm up shared preferences in bypass mode in DialtactsActivity.onCreate. (Note that this shouldn't slow it down because we were already accessing them but without bypassing strict mode.)
I also added a new "storage" module which caches device protected shared prefs. Before we were not caching them and every access was resulting in a disk access, because #createDeviceProtectedStorageContext returns a new context for each call. (Note that this change is required for warming those prefs to work.)
Note that warming up prefs doesn't fix cases where prefs are read from jobs, services, or Application#onCreate (because those things can happen before DialtactsActivity#onCreate) so there is still a need to bypass in those specific places.
Finally, there were various other violations which we now bypass though we probably shouldn't; I'm considering these as being grandfathered in and it would be nice to fix them at some point but today I'd like to just get the app into a usable state so devs can keep strict mode enabled.
Bug: 64118795
Test: manually navigated bugfood build and observed no/fewer crashes
PiperOrigin-RevId: 165031607
Change-Id: I336212a650a7bd93915ebe56a08e976d37818d68
Diffstat (limited to 'java/com/android/dialer/storage/StorageComponent.java')
-rw-r--r-- | java/com/android/dialer/storage/StorageComponent.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/java/com/android/dialer/storage/StorageComponent.java b/java/com/android/dialer/storage/StorageComponent.java new file mode 100644 index 000000000..51afea70b --- /dev/null +++ b/java/com/android/dialer/storage/StorageComponent.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017 The Android 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 + */ + +package com.android.dialer.storage; + +import android.content.Context; +import android.content.SharedPreferences; +import com.android.dialer.inject.HasRootComponent; +import dagger.Subcomponent; + +/** Dagger component for storage. */ +@Subcomponent +public abstract class StorageComponent { + + public abstract @DeviceProtected SharedPreferences deviceProtectedSharedPreferences(); + + public static StorageComponent get(Context context) { + return ((StorageComponent.HasComponent) + ((HasRootComponent) context.getApplicationContext()).component()) + .storageComponent(); + } + + /** Used to refer to the root application component. */ + public interface HasComponent { + StorageComponent storageComponent(); + } +} |