Observing frequent memory leak on Samsung S6 Edge with Android 7.0 involving our activity context and Samsungs' clipboard manager
D/LeakCanary: In im.example.app.debug:2.22.0:0.
D/LeakCanary: * im.example.app.ui.activities.GroupChatActivity has leaked:
D/LeakCanary: * GC ROOT com.samsung.android.content.clipboard.SemClipboardManager$2.this$0 (anonymous subclass of android.sec.clipboard.IClipboardDataPasteEvent$Stub)
D/LeakCanary: * references com.samsung.android.content.clipboard.SemClipboardManager.mContext
D/LeakCanary: * leaks im.example.app.ui.activities.GroupChatActivity instance
D/LeakCanary: * Retaining: 1.6 MB.
D/LeakCanary: * Reference Key: 48f5a969-d8c4-434f-a4af-e2ff53157ddd
D/LeakCanary: * Device: samsung samsung SM-G925F zeroltexx
D/LeakCanary: * Android Version: 7.0 API: 24 LeakCanary: 1.5 00f37f5
D/LeakCanary: * Durations: watch=5013ms, gc=173ms, heap dump=4561ms, analysis=227966ms
D/LeakCanary: * Details:
D/LeakCanary: * Instance of com.samsung.android.content.clipboard.SemClipboardManager$2
D/LeakCanary: | static $classOverhead = byte[744]@315280385 (0x12cacc01)
D/LeakCanary: | this$0 = com.samsung.android.content.clipboard.SemClipboardManager@342092224 (0x1463e9c0)
D/LeakCanary: | mDescriptor = java.lang.String@314652704 (0x12c13820)
D/LeakCanary: | mObject = 490498265248
D/LeakCanary: | mOwner = com.samsung.android.content.clipboard.SemClipboardManager$2@331477952 (0x13c1f3c0)
D/LeakCanary: | shadow$_klass_ = com.samsung.android.content.clipboard.SemClipboardManager$2
D/LeakCanary: | shadow$_monitor_ = 0
D/LeakCanary: * Instance of com.samsung.android.content.clipboard.SemClipboardManager
D/LeakCanary: | static ACTION_REMOVE_CLIP = java.lang.String@314664576 (0x12c16680)
D/LeakCanary: | static $classOverhead = byte[904]@1980290401 (0x7608d561)
D/LeakCanary: | static sService = android.sec.clipboard.IClipboardService$Stub$Proxy@314579456 (0x12c01a00)
D/LeakCanary: | static ACTION_DISMISS_CLIPBOARD = java.lang.String@314731392 (0x12c26b80)
D/LeakCanary: | static ACTION_CLIPBOARD_CLOSED = java.lang.String@314730960 (0x12c269d0)
D/LeakCanary: | static EXTRA_DARK_THEME = java.lang.String@314816200 (0x12c3b6c8)
D/LeakCanary: | static EXTRA_NO_TOAST = java.lang.String@314883872 (0x12c4bf20)
D/LeakCanary: | static ACTION_CLIPBOARD_OPENED = java.lang.String@314730384 (0x12c26790)
D/LeakCanary: | static EXTRA_EXTRA_PATH = java.lang.String@314771664 (0x12c308d0)
D/LeakCanary: | static TAG = java.lang.String@314943520 (0x12c5a820)
D/LeakCanary: | static EXTRA_PATH = java.lang.String@1867865776 (0x6f555eb0)
D/LeakCanary: | static EXTRA_TYPE = java.lang.String@1867826880 (0x6f54c6c0)
D/LeakCanary: | static ACTION_ADD_CLIP = java.lang.String@314663424 (0x12c16200)
D/LeakCanary: | FAIL_SET_DATA = 1
D/LeakCanary: | KEY_DATA = java.lang.String@1868267080 (0x6f5b7e48)
D/LeakCanary: | KEY_FILTER = java.lang.String@1869366096 (0x6f6c4350)
D/LeakCanary: | PROTECTED_DATA_MAX = 3
D/LeakCanary: | SUCCESS_AND_SAVE_BITMAP = 2
D/LeakCanary: | SUCCESS_SET_DATA = 0
D/LeakCanary: | mClipboardPasteEvent = com.samsung.android.content.clipboard.SemClipboardManager$2@331477952 (0x13c1f3c0)
D/LeakCanary: | mCocktailBarManager = com.samsung.android.cocktailbar.CocktailBarManager@331477888 (0x13c1f380)
D/LeakCanary: | mContext = im.example.app.ui.activities.GroupChatActivity@334734848 (0x13f3a600)
D/LeakCanary: | mHandler = com.samsung.android.content.clipboard.SemClipboardManager$3@331477920 (0x13c1f3a0)
D/LeakCanary: | mIsFiltered = false
D/LeakCanary: | mIsMaximumSize = false
D/LeakCanary: | mOnClipboardEventServiceListener = com.samsung.android.content.clipboard.SemClipboardManager$1@331477984 (0x13c1f3e0)
D/LeakCanary: | mOnClipboardEventServiceListeners = java.util.ArrayList@331126912 (0x13bc9880)
D/LeakCanary: | mPasteListener = null
D/LeakCanary: | mPersonaManager = com.samsung.android.knox.SemPersonaManager@331126888 (0x13bc9868)
D/LeakCanary: | mRegInterface = null
D/LeakCanary: | mSetDataHandler = null
D/LeakCanary: | mTypeId = 0
D/LeakCanary: | shadow$_klass_ = com.samsung.android.content.clipboard.SemClipboardManager
D/LeakCanary: | shadow$_monitor_ = 0
D/LeakCanary: * Instance of im.example.app.ui.activities.GroupChatActivity
D/LeakCanary: | static $change = null
D/LeakCanary: | static serialVersionUID = 4181920779988445483
D/LeakCanary: | static $classOverhead = byte[5848]@317517825 (0x12ecf001)
D/LeakCanary: | static TAG = java.lang.String@314980832 (0x12c639e0)
D/LeakCanary: | DESCRIPTION_MIN_LENGTH_FOR_POPUP = 50
D/LeakCanary: | bottomButton = android.support.v7.widget.AppCompatButton@329263104 (0x13a02800)
D/LeakCanary: | bottomButtonWrapper = android.widget.FrameLayout@328830976 (0x13999000)
D/LeakCanary: | buttonProgressBar = com.rey.material.widget.ProgressView@329259008 (0x13a01800)
D/LeakCanary: | chatWrapper = null
D/LeakCanary: | onlineMembersCount = 1
D/LeakCanary: | privateView = null
D/LeakCanary: | adapter = im.example.app.adapters.ChatAdapter@328077664 (0x138e1160)
D/LeakCanary: | allBottomLoaded = true
D/LeakCanary: | allTopLoaded = false
D/LeakCanary: | alreadyLoading = false
D/LeakCanary: | chatEditor = im.example.app.core.ChatEditor@327850272 (0x138a9920)
D/LeakCanary: | emojiSkinPopupView = null
D/LeakCanary: | fromCountedSerial = null
D/LeakCanary: | headersDecoration = com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersDecoration@328033992 (0x138d66c8)
D/LeakCanary: | highlightMessage = false
D/LeakCanary: | inputControls = android.widget.LinearLayout@327639040 (0x13876000)
D/LeakCanary: | lastSeenCountedSerial = java.lang.Long@335647216 (0x140191f0)
D/LeakCanary: | lastSeenSerial = java.lang.Long@335647232 (0x14019200)
D/LeakCanary: | myMessages = false
D/LeakCanary: | newMessageHeader = im.example.app.adapters.NewMessageHeaderDecoration@328033912 (0x138d6678)
D/LeakCanary: | resumed = true
D/LeakCanary: | scrollToNewMessageHeaderOnSync = false
D/LeakCanary: | storedPositionTopOffset = 0
D/LeakCanary: | subscribed = true
D/LeakCanary: | targetSerial = null
D/LeakCanary: | titleHintShowing = false
D/LeakCanary: | typingSubscriptions = java.util.HashMap@325263816 (0x136321c8)
D/LeakCanary: | typingUsers = java.util.HashMap@325263856 (0x136321f0)
D/LeakCanary: | channel = im.example.app.entity.Channel@320791400 (0x131ee368)
D/LeakCanary: | goToBottomButton = android.support.v7.widget.AppCompatImageView@327342080 (0x1382d800)
D/LeakCanary: | imageShowClicked = false
D/LeakCanary: | lastVisibleLink = java.lang.String@1867494664 (0x6f4fb508)
D/LeakCanary: | layoutManager = im.example.app.ui.extensions.CustomLinearLayoutManager@329887520 (0x13a9af20)
D/LeakCanary: | linkPopupView = null
D/LeakCanary: | membership = im.example.app.entity.Membership@326927480 (0x137c8478)
D/LeakCanary: | popupWindow = null
D/LeakCanary: | progressBar = android.widget.ProgressBar@327341056 (0x1382d400)
D/LeakCanary: | radialPopupWindow = im.example.app.ui.extensions.RadialPopupWindow@318692544 (0x12fedcc0)
D/LeakCanary: | recyclerView = android.support.v7.widget.RecyclerView@327344128 (0x1382e000)
D/LeakCanary: | currentSubTitle = android.text.SpannableString@334505344 (0x13f02580)
D/LeakCanary: | appBarLayout = null
D/LeakCanary: | bottomNavigationView = null
D/LeakCanary: | collapsingToolbarLayout = null
D/LeakCanary: | contentOverlay = android.view.View@334736384 (0x13f3ac00)
D/LeakCanary: | contentWrapper = android.widget.FrameLayout@326764544 (0x137a0800)
D/LeakCanary: | coordinatorLayout = null
D/LeakCanary: | fab = null
D/LeakCanary: | menuIncrementedId = -1
D/LeakCanary: | progressBar = android.widget.ProgressBar@326766592 (0x137a1000)
D/LeakCanary: | rightButton = android.support.v7.widget.AppCompatButton@326765568 (0x137a0c00)
D/LeakCanary: | subTitleProgressBar = android.widget.ProgressBar@326767616 (0x137a1400)
D/LeakCanary: | tabLayout = null
D/LeakCanary: | toolbar = android.support.v7.widget.Toolbar@326433792 (0x1374fc00)
D/LeakCanary: | toolbarContainer = null
D/LeakCanary: | toolbarContentWrapper = android.widget.LinearLayout@326429696 (0x1374ec00)
D/LeakCanary: | toolbarGroupLogo = im.example.app.ui.extensions.GroupAvatarView@326454272 (0x13754c00)
D/LeakCanary: | toolbarMode = im.example.app.ui.activities.ToolbarActivity$ToolbarMode@320724176 (0x131ddcd0)
D/LeakCanary: | toolbarSubTitle = android.support.v7.widget.AppCompatTextView@326768640 (0x137a1800)
D/LeakCanary: | toolbarSubTitleWrapper = android.widget.LinearLayout@326769664 (0x137a1c00)
D/LeakCanary: | toolbarTitle = android.support.v7.widget.AppCompatTextView@326755328 (0x1379e400)
D/LeakCanary: | toolbarUserLogo = im.example.app.ui.extensions.UserAvatarView@326610944 (0x1377b000)
D/LeakCanary: | appLayout = im.example.app.ui.extensions.AppLayout@326382592 (0x13743400)
D/LeakCanary: | customTabActivityHelper = im.example.app.ui.extensions.customtabs.CustomTabActivityHelper@326213032 (0x13719da8)
D/LeakCanary: | pendingRunnable = null
D/LeakCanary: | subscriptions = rx.subscriptions.CompositeSubscription@327019840 (0x137ded40)
D/LeakCanary: | tracker = com.google.android.gms.analytics.Tracker@315915408 (0x12d47c90)
D/LeakCanary: | mDelegate = android.support.v7.app.AppCompatDelegateImplN@326663904 (0x13787ee0)
D/LeakCanary: | mEatKeyUpEvent = false
D/LeakCanary: | mResources = null
D/LeakCanary: | mThemeId = 2131361857
D/LeakCanary: | mCreated = true
D/LeakCanary: | mFragments = android.support.v4.app.FragmentController@327019872 (0x137ded60)
D/LeakCanary: | mHandler = android.support.v4.app.FragmentActivity$1@327174496 (0x13804960)
D/LeakCanary: | mNextCandidateRequestIndex = 0
D/LeakCanary: | mOptionsMenuInvalidated = false
D/LeakCanary: | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@326213080 (0x13719dd8)
D/LeakCanary: | mReallyStopped = true
D/LeakCanary: | mRequestedPermissionsFromFragment = false
D/LeakCanary: | mResumed = false
D/LeakCanary: | mRetaining = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mStartedActivityFromFragment = false
D/LeakCanary: | mStartedIntentSenderFromFragment = false
D/LeakCanary: | mExtraDataMap = android.support.v4.util.SimpleArrayMap@326195784 (0x13715a48)
D/LeakCanary: | mActionBar = null
D/LeakCanary: | mActionModeTypeStarting = 0
D/LeakCanary: | mActivityInfo = android.content.pm.ActivityInfo@314596800 (0x12c05dc0)
D/LeakCanary: | mActivityTransitionState = android.app.ActivityTransitionState@327159416 (0x13800e78)
D/LeakCanary: | mAppLockCheckRunnable = android.app.Activity$1@327019904 (0x137ded80)
D/LeakCanary: | mAppLockIsInMultiWindowMode = false
D/LeakCanary: | mApplication = im.example.app.App@315620224 (0x12cffb80)
D/LeakCanary: | mCalled = true
D/LeakCanary: | mChangeCanvasToTranslucent = false
D/LeakCanary: | mChangingConfigurations = false
D/LeakCanary: | mComponent = android.content.ComponentName@327217136 (0x1380eff0)
D/LeakCanary: | mConfigChangeFlags = 0
D/LeakCanary: | mCurrentConfig = android.content.res.Configuration@326688648 (0x1378df88)
D/LeakCanary: | mDecor = null
D/LeakCanary: | mDefaultKeyMode = 0
D/LeakCanary: | mDefaultKeySsb = null
D/LeakCanary: | mDestroyed = true
D/LeakCanary: | mDoReportFullyDrawn = false
D/LeakCanary: | mEatKeyUpEvent = false
D/LeakCanary: | mEmbeddedID = null
D/LeakCanary: | mEnableDefaultActionBarUp = true
D/LeakCanary: | mEnterTransitionListener = android.app.SharedElementCallback$1@1875119720 (0x6fc40e68)
D/LeakCanary: | mExitTransitionListener = android.app.SharedElementCallback$1@1875119720 (0x6fc40e68)
D/LeakCanary: | mFinished = true
D/LeakCanary: | mFlipfont = 0
D/LeakCanary: | mFragments = android.app.FragmentController@327019936 (0x137deda0)
D/LeakCanary: | mHandler = android.os.Handler@327174592 (0x138049c0)
D/LeakCanary: | mHasCurrentPermissionsRequest = false
D/LeakCanary: | mIdent = 179641163
D/LeakCanary: | mInstanceTracker = android.os.StrictMode$InstanceTracker@327019920 (0x137ded90)
D/LeakCanary: | mInstrumentation = android.app.Instrumentation@320684888 (0x131d4358)
D/LeakCanary: | mIntent = android.content.Intent@327098304 (0x137f1fc0)
D/LeakCanary: | mLastNonConfigurationInstances = null
D/LeakCanary: | mMainThread = android.app.ActivityThread@314589536 (0x12c04160)
D/LeakCanary: | mManagedCursors = java.util.ArrayList@326195808 (0x13715a60)
D/LeakCanary: | mManagedDialogs = null
D/LeakCanary: | mMenuInflater = null
D/LeakCanary: | mParent = null
D/LeakCanary: | mPolicyManager = null
D/LeakCanary: | mReferrer = java.lang.String@327035864 (0x137e2bd8)
D/LeakCanary: | mResultCode = 0
D/LeakCanary: | mResultData = null
D/LeakCanary: | mResumed = false
D/LeakCanary: | mScreenChangeListener = null
D/LeakCanary: | mSearchEvent = null
D/LeakCanary: | mSearchManager = null
D/LeakCanary: | mStartedActivity = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mTaskDescription = android.app.ActivityManager$TaskDescription@327174528 (0x13804980)
D/LeakCanary: | mTemporaryPause = false
D/LeakCanary: | mTitle = java.lang.String@315619600 (0x12cff910)
D/LeakCanary: | mTitleColor = 0
D/LeakCanary: | mTitleReady = true
D/LeakCanary: | mToken = android.os.BinderProxy@327278528 (0x1381dfc0)
D/LeakCanary: | mTranslucentCallback = null
D/LeakCanary: | mUiThread = java.lang.Thread@1980197944 (0x76076c38)
D/LeakCanary: | mVisibleBehind = false
D/LeakCanary: | mVisibleFromClient = true
D/LeakCanary: | mVisibleFromServer = true
D/LeakCanary: | mVoiceInteractor = null
D/LeakCanary: | mWindow = com.android.internal.policy.PhoneWindow@331357472 (0x13c01d20)
D/LeakCanary: | mWindowAdded = true
D/LeakCanary: | mWindowManager = android.view.WindowManagerImpl@326213560 (0x13719fb8)
D/LeakCanary: | mInflater = com.android.internal.policy.PhoneLayoutInflater@327645888 (0x13877ac0)
D/LeakCanary: | mOverrideConfiguration = null
D/LeakCanary: | mResources = android.content.res.Resources@326101824 (0x136feb40)
D/LeakCanary: | mTheme = android.content.res.Resources$Theme@327019616 (0x137dec60)
D/LeakCanary: | mThemeResource = 2131361857
D/LeakCanary: | mBase = android.app.ContextImpl@329077248 (0x139d5200)
D/LeakCanary: | shadow$_klass_ = im.example.app.ui.activities.GroupChatActivity
D/LeakCanary: | shadow$_monitor_ = 1073746630
D/LeakCanary: * Excluded Refs:
D/LeakCanary: | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
D/LeakCanary: | Thread:FinalizerWatchdogDaemon (always)
D/LeakCanary: | Thread:main (always)
D/LeakCanary: | Thread:LeakCanary-Heap-Dump (always)
D/LeakCanary: | Class:java.lang.ref.WeakReference (always)
D/LeakCanary: | Class:java.lang.ref.SoftReference (always)
D/LeakCanary: | Class:java.lang.ref.PhantomReference (always)
D/LeakCanary: | Class:java.lang.ref.Finalizer (always)
D/LeakCanary: | Class:java.lang.ref.FinalizerReference (always)
same here...
Same on S8+ 😞
s8 same issue SemClipboardManager.mContext
s8 issue same SemClipboardManager.mContext
s8 issue same SemClipboardManager.mContext and SemEmergencyManager
same on S8
Could someone provide an hprof which highlights this issue? I'm wondering if com.samsung.android.content.clipboard.SemClipboardManager extends android.sec.clipboard.ClipboardUIManager, given the similarity to the excluded ref found here.
Here. SemClipboardManager
those two issues are reported as a leak repeatedly in my application(Galaxy S8)
SemEmergencyManager leaking aswell in my app (Galaxy S6). Updated to Nougat last night
@davidevaliante are you seeing this in API 24 or 25?
@jrodbx 25
I got SemEmergencyManager leaked on samsung s6 android 7
Does anybody know if this was already reported to Samsung?
got an activity instance leak via semClipboardMananger on Samsung Galaxy s8 ,
same here in S8
Same here on S6 with Android 7.0
Same here on S6 with Android 7.0 on SDK 25 for SemEmergencyManager
Same here with s8+ (7.0)
Same here with Samsung a5 2017 (
7.0)
Problem still exists here with Samsung s8 (Android 7.0)
Same on S6+,Android 7.0.
Also here with Samsung S8 - Android 7.0! 😢
Same here with Samsung S8+ - Android 7.0, any workaround?
Add it to excluded refs
On Mon, Oct 23, 2017, 12:17 AM Val Okafor notifications@github.com wrote:
Same here with Samsung S8+ - Android 7.0, any workaround?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/square/leakcanary/issues/740#issuecomment-338543823,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEZWsPSX_KwOKW0OaPU1pHYn7jMIxks5svBNQgaJpZM4NALiC
.
Sorry for opening an old issue, but I've had success in fixing this with the following code in onDestroy in your activities or in a onDestroy in Application.ActivityLifecycleCallbacks:
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.MANUFACTURER.equals("samsung")) {
Object systemService = getSystemService(Class.forName("com.samsung.android.content.clipboard.SemClipboardManager"));
Field mContext = systemService.getClass().getDeclaredField("mContext");
mContext.setAccessible(true);
mContext.set(systemService, null);
}
} catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) {
//ignored
}
Thank you.. I came across the same issue and used your code, and it seems to work for me as well.
@Jaypeg85 is this safe? At least be sure calling after super.onDestroy() :D
Yes, of course you need the super.onDestroy, like in all the other snippets.... as for safety, do you mean if the clipboardmanager still works? I have used it for a while, and I havent encountered any issues
@Jaypeg85 i mean... if samsung changes something in a future this could lead into crashes, right?
Btw... thanks for the fix!
Yes i suppose it could... Changes in the API would only undo the fix and the exception would be caught though.
@Jaypeg85 got it, thank you!
It actually seems it can cause nullpointers, I'll update if I find a fix
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at com.samsung.android.content.clipboard.SemClipboardManager.isCocktailBarDisplayed(SemClipboardManager.java:1480)
at com.samsung.android.content.clipboard.SemClipboardManager.clearFilter(SemClipboardManager.java:1068)
at android.widget.TextView.onDetachedFromWindowInternal(TextView.java:6212)
still happens in latest release v1.5.4, do I need to use "master" instead?
Is there a fix for this issue? SemEmergencyManager is leaking on Samsung A tab(T-585).
There has to be no fix for this it seems. I happen to use this code mentioned by @Jaypeg85 it worked for some Activities but gave below error for Another Activity. Error log is posted here.
I looked at SemClipboardManager class here but I dont seem to understand why mContext is null.
2018-10-11 10:58:43.200 24077-24077/plante.com.cobalt.mobileaccess E/AndroidRuntime: FATAL EXCEPTION: main
Process: plante.com.cobalt.mobileaccess, PID: 24077
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getOpPackageName()' on a null object reference
at com.samsung.android.content.clipboard.SemClipboardManager.registerClipboardEventListener(SemClipboardManager.java:625)
at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:272)
On a particular activity, SemClipboardManager leaks 32MBs.
Device is galaxy s5 Neo API 24
There has to be no fix for this it seems. I happen to use this code mentioned by @Jaypeg85 it worked for some Activities but gave below error for Another Activity. Error log is posted here.
I looked at SemClipboardManager class here but I dont seem to understand why mContext is null.
2018-10-11 10:58:43.200 24077-24077/plante.com.cobalt.mobileaccess E/AndroidRuntime: FATAL EXCEPTION: main Process: plante.com.cobalt.mobileaccess, PID: 24077 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getOpPackageName()' on a null object reference at com.samsung.android.content.clipboard.SemClipboardManager.registerClipboardEventListener(SemClipboardManager.java:625) at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:272)On a particular activity, SemClipboardManager leaks 32MBs.
Device is galaxy s5 Neo API 24
use
mContext.set(systemService, getApplicationContext());
instead of
mContext.set(systemService, null);
Hi guys, sorry for commenting on an already closed thread. I'm having exactly the same issues with Samsung devices running Android 7.0. All logs on fabric are coming from Samsung Galaxy S6.
The error is pointing to ActivityBase where I'm overriding getSystemService. Did anyone found a workaround this issue?
_Fatal Exception: java.lang.IllegalStateException: super.getSystemService(name) must not be null
at com.myclubhub.app.screens.ActivityBase.getSystemService(ActivityBase.kt:40)
at com.samsung.android.content.clipboard.SemClipboardManager.isCocktailBarDisplayed(SemClipboardManager.java:1326)
at com.samsung.android.content.clipboard.SemClipboardManager.clearFilter(SemClipboardManager.java:947)
at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:266)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:1197)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4092)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)_
There has to be no fix for this it seems. I happen to use this code mentioned by @Jaypeg85 it worked for some Activities but gave below error for Another Activity. Error log is posted here.
I looked at SemClipboardManager class here but I dont seem to understand why mContext is null.
2018-10-11 10:58:43.200 24077-24077/plante.com.cobalt.mobileaccess E/AndroidRuntime: FATAL EXCEPTION: main Process: plante.com.cobalt.mobileaccess, PID: 24077 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getOpPackageName()' on a null object reference at com.samsung.android.content.clipboard.SemClipboardManager.registerClipboardEventListener(SemClipboardManager.java:625) at android.widget.EditText.dispatchWindowFocusChanged(EditText.java:272)On a particular activity, SemClipboardManager leaks 32MBs.
Device is galaxy s5 Neo API 24
Same issue.
how can i fix the null exception?
Most helpful comment
Same here with s8+ (7.0)