Code Monkey home page Code Monkey logo

factor_launcher_reboot's Issues

Custom view to better handle blur

BlurContainer:

  1. contains an ImageView
  2. can scroll the ImageView vertically and horizontally

Usage:

  1. set the ImageVIew drawable to the blurred wallpaper
  2. scroll the ImageView based on the tile's location on the screen

Memory leak on search bar

┬───
│ GC Root: System class

├─ android.view.inputmethod.InputMethodManager class
│ Leaking: NO (InputMethodManager↓ is not leaking and a class is never
│ leaking)
│ ↓ static InputMethodManager.sInstance
├─ android.view.inputmethod.InputMethodManager instance
│ Leaking: NO (DecorView↓ is not leaking and InputMethodManager is a
│ singleton)
│ ↓ InputMethodManager.mNextServedView
├─ com.android.internal.policy.DecorView instance
│ Leaking: NO (LinearLayout↓ is not leaking and View attached)
│ View is part of a window view hierarchy
│ View.mAttachInfo is not null (view attached)
│ View.mWindowAttachCount = 1
│ mContext instance of com.android.internal.policy.DecorContext, wrapping
│ activity com.factor.launcher.activities.HomeActivity with mDestroyed =
│ false
│ ↓ DecorView.mContentRoot
├─ android.widget.LinearLayout instance
│ Leaking: NO (HomeActivity↓ is not leaking and View attached)
│ View is part of a window view hierarchy
│ View.mAttachInfo is not null (view attached)
│ View.mWindowAttachCount = 1
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ LinearLayout.mContext
├─ com.factor.launcher.activities.HomeActivity instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking and Activity#mDestroyed is
│ false)
│ mApplication instance of com.factor.launcher.FactorApplication
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ HomeActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ ↓ HashMap$Node[].[5]
├─ java.util.HashMap$Node instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$9 instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$9.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (HomeScreenFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ com.factor.launcher.fragments.HomeScreenFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ context instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ HomeScreenFragment.mAnimationInfo
│ ~~~~~~~~~~~~~~
├─ androidx.fragment.app.Fragment$AnimationInfo instance
│ Leaking: UNKNOWN
│ Retaining 29265963 bytes in 38324 objects
│ ↓ Fragment$AnimationInfo.mFocusedView
│ ~~~~~~~~~~~~
├─ androidx.appcompat.widget.SearchView$SearchAutoComplete instance
│ Leaking: UNKNOWN
│ Retaining 29265877 bytes in 38323 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.search_src_text
│ View.mWindowAttachCount = 1
│ mPopupContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ SearchView$SearchAutoComplete.mSearchView
│ ~~~~~~~~~~~
├─ androidx.appcompat.widget.SearchView instance
│ Leaking: UNKNOWN
│ Retaining 29235940 bytes in 37805 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.search_view
│ View.mWindowAttachCount = 1
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ SearchView.mParent
│ ~~~~~~~
├─ androidx.constraintlayout.widget.ConstraintLayout instance
│ Leaking: UNKNOWN
│ Retaining 29214726 bytes in 37513 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mWindowAttachCount = 1
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ ConstraintLayout.mParent
│ ~~~~~~~
├─ eightbitlab.com.blurview.BlurView instance
│ Leaking: UNKNOWN
│ Retaining 29213475 bytes in 37494 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.search_blur
│ View.mWindowAttachCount = 1
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ BlurView.mParent
│ ~~~~~~~
├─ androidx.cardview.widget.CardView instance
│ Leaking: UNKNOWN
│ Retaining 1608 bytes in 26 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.search_base
│ View.mWindowAttachCount = 1
│ mContext instance of com.factor.launcher.activities.HomeActivity with
│ mDestroyed = false
│ ↓ CardView.mParent
│ ~~~~~~~
╰→ androidx.constraintlayout.widget.ConstraintLayout instance
​ Leaking: YES (ObjectWatcher was watching this because com.factor.launcher.
​ fragments.HomeScreenFragment received Fragment#onDestroyView() callback
​ (references to its views should be cleared to prevent leaks))
​ Retaining 2614 bytes in 64 objects
​ key = 41fb93c4-5a73-49df-83be-e551faf597c7
​ watchDurationMillis = 46294
​ retainedDurationMillis = 41292
​ View not part of a window view hierarchy
​ View.mAttachInfo is null (view detached)
​ View.mWindowAttachCount = 1
​ mContext instance of com.factor.launcher.activities.HomeActivity with
​ mDestroyed = false

METADATA

Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: Sony
LeakCanary version: 2.5
App process name: com.factor.launcher
Stats: LruCache[maxSize=3000,hits=15548,misses=170334,hitRate=8%]
RandomAccess[bytes=10751814,reads=170334,travel=56240224871,range=25584673,size=
29970721]
Analysis duration: 5454 ms

Wallpaper scale issue

When the user changes the system wallpaper whose aspect ratio is different from that of the screen, the blur effect may be wrongly scaled

Stability Issues

StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
at java.lang.Class.getDeclaredMethodInternal(Native Method)
at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
at java.lang.Class.getMethod(Class.java:2063)
at java.lang.Class.getMethod(Class.java:1690)
at b.b.q.b1.c(ViewUtils.java:1)
at b.b.k.k.z(AppCompatDelegateImpl.java:44)
at b.b.k.k.l(AppCompatDelegateImpl.java:1)
at b.b.k.h.setContentView(AppCompatActivity.java:1)
at com.factor.launcher.activities.WelcomeActivity.onCreate(WelcomeActivity.java:5)
at android.app.Activity.performCreate(Activity.java:7144)
at android.app.Activity.performCreate(Activity.java:7135)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:2)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

rework search feature

instead of performing a simple scroll to recyclerview position, display a new fragment to include more detailed results

Accessibility

  1. arrow button too small on certain devices
  2. label content for screen reader

Redesign home screen tiles

  1. display more notification content
  2. handle large tiles with no app shortcuts
  3. animation on payload update
  4. random animations on tile idle

Better animations

better animations when clicking an element, and when transitioning between activities/fragments.

Change check condition for renaming app

When renaming an app, currently if the app has a new name different from its original and when the user tries to change its name to the same as original (without using reset), it would not register

Finish app settings screen

  1. enable/disable blur
  2. blur radius
  3. tiles corner radius
  4. enable/disable icon shadow
  5. set as default launcher
  6. launch system settings
  7. icon pack
  8. set tile colours
  9. request permissions

Optimize permission management

In the app settings, add a message when the user attempts to turn on the blur toggle while the app has no permission to access storage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.