- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
below is my leak report captured by leak canary but i am not able to detect from where it keeps referencing object
* GC ROOT maps.O.n.d
* references maps.ae.e.i
* references java.util.ArrayList.array
* references array java.lang.Object[].[15]
* references maps.af.a$2.b
* references maps.af.a.c
* references maps.af.b.c
* references maps.af.d.mParent
* references android.widget.FrameLayout.mParent
* references com.google.android.gms.maps.MapView.mParent
* references android.widget.LinearLayout.mParent
* references android.support.v7.widget.CardView.mParent
* references android.widget.LinearLayout.mLayoutParams
* references android.support.v7.widget.RecyclerView$LayoutParams.mViewHolder
* references com.aimdek.healthwel.adapter.FeedsAdpter$MyViewHolder.this$0
* references com.aimdek.healthwel.adapter.FeedsAdpter.feedsFragment
* leaks com.aimdek.healthwel.fragment.FeedsFragment instance
* Retaining: 1.0 KB.
* Reference Key: f46244a8-7376-452a-969b-6f19fd070ea2
* Device: motorola motorola XT1068 titan_retaildsds
* Android Version: 6.0 API: 23 LeakCanary: 1.4-beta2 3799172
* Durations: watch=5202ms, gc=259ms, heap dump=13581ms, analysis=108725ms
* Details:
* Instance of maps.O.n
| static f = java.util.Arrays$ArrayList@315426320 (0x12cd0610)
| static $staticOverhead = byte[8]@328672257 (0x13972401)
| g = -1
| f = false
| g = 256
| h = java.util.Arrays$ArrayList@315426320 (0x12cd0610)
| i = 0
| j = 1
| k = 2.0
| b = maps.O.k@322255648 (0x13353b20)
| c = maps.M.ac$i@316399200 (0x12dbde60)
| d = maps.ae.e@332202880 (0x13cd0380)
| f = null
| g = java.util.concurrent.locks.ReentrantLock@315427056 (0x12cd08f0)
| h = maps.y.m@328083040 (0x138e2660)
| i = maps.O.b$3@316588288 (0x12dec100)
| j = false
| k = maps.O.n$1@315570880 (0x12cf3ac0)
| l = java.util.LinkedList@316435840 (0x12dc6d80)
| m = maps.O.b$2@316435936 (0x12dc6de0)
| n = java.util.HashMap@322255600 (0x13353af0)
| o = 3000
| p = 0
| q = 0
| r = 0
| s = false
| t = java.util.ArrayList@316435904 (0x12dc6dc0)
| u = false
| v = maps.O.b$1@315427072 (0x12cd0900)
| contextClassLoader = dalvik.system.PathClassLoader@315133024 (0x12c88c60)
| daemon = false
| group = java.lang.ThreadGroup@1869718984 (0x6f71a5c8)
| hasBeenStarted = true
| id = 9069
| inheritableValues = null
| interruptActions = java.util.ArrayList@316435584 (0x12dc6c80)
| localValues = java.lang.ThreadLocal$Values@316588192 (0x12dec0a0)
| lock = java.lang.Object@315427040 (0x12cd08e0)
| name = java.lang.String@322255456 (0x13353a60)
| nativePeer = -1194656976
| parkBlocker = null
| parkState = 1
| priority = 5
| stackSize = 0
| target = null
| uncaughtHandler = null
| shadow$_klass_ = maps.O.n
| shadow$_monitor_ = 1267345999
* Instance of maps.ae.e
| static $staticOverhead = byte[24]@331324817 (0x13bf9d91)
| static j = java.lang.String@332151648 (0x13cc3b60)
| static s = java.util.HashMap@332198576 (0x13ccf2b0)
| static a =
| mParentFragment = FriendFragment@317174144 (0x12e7b180)
| mReenterTransition = java.lang.Object@326447456 (0x13753160)
| mRemoving = false
| mRestored = false
| mRetainInstance = false
| mRetaining = false
| mReturnTransition = java.lang.Object@326447456 (0x13753160)
| mSavedFragmentState = null
| mSavedViewState = android.util.SparseArray@324672992 (0x135a1de0)
| mSharedElementEnterTransition = null
| mSharedElementReturnTransition = java.lang.Object@326447456 (0x13753160)
| mState = 0
| mStateAfterAnimating = 0
| mTag = null
| mTarget = null
| mTargetIndex = -1
| mTargetRequestCode = 0
| mUserVisibleHint = false
| mView = null
| mWho = null
| shadow$_klass_ = com.aimdek.healthwel.fragment.FeedsFragment
| shadow$_monitor_ = -2095684492
* Excluded Refs:
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.widget.Editor$Blink.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
Instance of com.aimdek.healthwel.adapter.FeedsAdpter
| allFeedsList = java.util.ArrayList@326789152 (0x137a6820)
| context = com.aimdek.healthwel.activity.MainActivity@315004672 (0x12c69700)
| feedsFragment = com.aimdek.healthwel.fragment.FeedsFragment@315395840 (0x12cc8f00)
| inflater = com.android.internal.policy.PhoneLayoutInflater@322687328 (0x133bd160)
| mHasStableIds = false
| mObservable = android.support.v7.widget.RecyclerView$AdapterDataObservable@316485552 (0x12dd2fb0)
| shadow$_klass_ = com.aimdek.healthwel.adapter.FeedsAdpter
| shadow$_monitor_ = 0
* Instance of com.aimdek.healthwel.fragment.FeedsFragment
| adapter = com.aimdek.healthwel.adapter.FeedsAdpter@321038624 (0x1322a920)
| birthday = android.support.v7.widget.AppCompatTextView@332811264 (0x13d64c00)
| dateformat = java.text.SimpleDateFormat@320969344 (0x13219a80)
| email = android.support.v7.widget.AppCompatTextView@332332032 (0x13cefc00)
| feedsId = null
| friendImg = com.mikhaellopez.circularimageview.CircularImageView@332806144 (0x13d63800)
| friendInfo = null
| imgBackground = android.widget.LinearLayout@332061696 (0x13cadc00)
| imgFriendBackground = android.support.v7.widget.AppCompatImageView@329300992 (0x13a0bc00)
| page = 1
| profile = android.widget.LinearLayout@332058624 (0x13cad000)
| recyclerView = com.malinskiy.superrecyclerview.SuperRecyclerView@332813312 (0x13d65400)
| secondLevel = false
| tvBirthDate = android.support.v7.widget.AppCompatTextView@332812288 (0x13d65000)
| tvEmailId = android.support.v7.widget.AppCompatTextView@332335104 (0x13cf0800)
| tvHeight = android.support.v7.widget.AppCompatTextView@332810240 (0x13d64800)
| tvName = android.support.v7.widget.AppCompatTextView@332807168 (0x13d63c00)
| tvWeight = android.support.v7.widget.AppCompatTextView@332326912 (0x13cee800)
| type = 21
| userId = java.lang.String@314601152 (0x12c06ec0)
| activity = com.aimdek.healthwel.activity.MainActivity@315004672 (0x12c69700)
| mAdded = false
| mAllowEnterTransitionOverlap = null
| mAllowReturnTransitionOverlap = null
| mAnimatingAway = null
| mArguments = android.os.Bundle@320969440 (0x13219ae0)
| mBackStackNesting = 0
| mCalled = true
| mCheckedForLoaderManager = false
| mChildFragmentManager = null
| mContainer = null
| mContainerId = 0
| mDeferStart = false
| mDetached = false
| mEnterTransition = null
| mEnterTransitionCallback = null
| mExitTransition = null
| mExitTransitionCallback = null
| mFragmentId = 0
| mFragmentManager = null
| mFromLayout = false
| mHasMenu = true
| mHidden = false
| mHost = null
| mInLayout = false
| mIndex = -1
| mInnerView = null
| mLoaderManager = null
| mLoadersStarted = false
| mMenuVisible = false
| mNextAnim = 0
| mParentFragment = com.aimdek.healthwel.fragment.FriendFragment@317174144 (0x12e7b180)
| mReenterTransition = java.lang.Object@326447456 (0x13753160)
| mRemoving = false
| mRestored = false
| mRetainInstance = false
| mRetaining = false
| mReturnTransition = java.lang.Object@326447456 (0x13753160)
| mSavedFragmentState = null
| mSavedViewState = android.util.SparseArray@324672992 (0x135a1de0)
| mSharedElementEnterTransition = null
| mSharedElementReturnTransition = java.lang.Object@326447456 (0x13753160)
| mState = 0
| mStateAfterAnimating = 0
| mTag = null
| mTarget = null
| mTargetIndex = -1
| mTargetRequestCode = 0
| mUserVisibleHint = false
| mView = null
| mWho = null
| shadow$_klass_ = com.aimdek.healthwel.fragment.FeedsFragment
| shadow$_monitor_ = -2095684492
下面是 FeedsAdapter 的代码
public class FeedsAdpter extends RecyclerView.Adapter<FeedsAdpter.MyViewHolder> {
private LayoutInflater inflater;
private Context context;
private FeedsFragment feedsFragment;
private ArrayList<FeedsDto> allFeedsList = new ArrayList<FeedsDto>();
public FeedsAdpter(Context context, FeedsFragment feedsFragment) {
this.context = context;
this.feedsFragment = feedsFragment;
inflater = LayoutInflater.from(context);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_feeds, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onViewRecycled(MyViewHolder holder) {
super.onViewRecycled(holder);
if(Validator.isNotNull(holder.mapView.getMap())) {
GoogleMap googleMap = holder.mapView.getMap();
googleMap.clear();
googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
googleMap=null;
}
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final FeedsDto feeds = allFeedsList.get(position);
GoogleMap googleMap;
if (Validator.isNotNull(feeds)) {
if (Validator.isNotNull(feeds.getImagePreviewUrl())) {
//imageLoader.displayImage(feeds.getImagePreviewUrl(), holder.userImg, HWUtil.IMAGE_OPTIONS);
Picasso.with(context).setIndicatorsEnabled(true);
Picasso.with(context)
.load(feeds.getImagePreviewUrl())
.resize(50,50)
.onlyScaleDown()
.placeholder(R.drawable.ic_launcher)
.error(R.drawable.profile_small_img)
.into(holder.userImg);
} else {
holder.userImg.setImageResource(R.drawable.profile_small_img);
}
holder.tvUserName.setText(feeds.getFullName());
MainActivity activity = (MainActivity) context;
String tempMsg = feeds.getFeeds().getMessage();
if (Validator.isNotNull(feeds.getFeeds().getHistoryId())) {
if (feeds.getFeeds().getUserId().equals(activity.preferences.getUserInfo().getId())) {
tempMsg = tempMsg.replace("[$ACTIVITY_OWNER$]", activity.getResources().getString(R.string.was_out));
} else {
tempMsg = tempMsg.replace("[$ACTIVITY_OWNER$]", activity.getResources().getString(R.string.was_out));
}
} else {
tempMsg = tempMsg.replace("[$ACTIVITY_OWNER$]", "");
}
holder.tvMsg.setText(tempMsg);
if (feeds.isLiked()) {
holder.likeBtn.setImageResource(R.drawable.like_icon_pink);
} else {
holder.likeBtn.setImageResource(R.drawable.like_icon_grey);
}
holder.tvDuration.setText(feeds.getFeedCreatedTime());
if (Validator.isNotNull(feeds.getFeeds().getHistoryMap()) && feeds.getFeeds().getHistoryMap().length > 0) {
if (holder.mapView != null) {
holder.mapView.onCreate(null);
holder.mapView.setVisibility(View.VISIBLE);
holder.mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
if (Validator.isNotNull(googleMap)) {
googleMap.clear();
holder.mapView.setClickable(false);
googleMap.getUiSettings().setMapToolbarEnabled(false);
List<HistoryMap> historyMaps = new ArrayList<HistoryMap>();
historyMaps.addAll(Arrays.asList(feeds.getFeeds().getHistoryMap()));
HWUtil.drawRouteIntoMap(historyMaps, googleMap);
}
}
});
}
} else {
holder.mapView.setVisibility(View.GONE);
}
holder.tvCommentcount.setText(String.valueOf(feeds.getFeeds().getCommentCount()));
if (feeds.getFeeds().getCommentCount() == 0) {
holder.commentBtn.setImageResource(R.drawable.comment_icon_grey_feeds);
} else {
holder.commentBtn.setImageResource(R.drawable.comment_icon_feeds);
}
holder.tvLikecount.setText(String.valueOf(feeds.getFeeds().getLikeCount()));
holder.tvPost.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Validator.isNotNull(holder.etComment.getText().toString())) {
hideKeyboard(context);
String comment = holder.etComment.getText().toString();
feedsFragment.updateComment(feeds.getFeeds().getId(), comment);
holder.etComment.setText(HWUtil.BLANK);
} else {
HWUtil.showToast(context, context.getResources().getString(R.string.enter_comment));
}
}
});
holder.likeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
feedsFragment.updateComment(feeds.getFeeds().getId(), null);
}
});
holder.commentBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity activity = (MainActivity) context;
activity.setTitle(context.getString(R.string.comment));
activity.preferences.setBack(true);
activity.preferences.setFeedsDto(feeds);
activity.replaceFragment(new CommentFragment(), null);
}
});
}
}
public static void hideKeyboard(Context context) {
try {
InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
View view = ((Activity) context).getCurrentFocus();
if (view != null) {
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void addAll(List<FeedsDto> list) {
allFeedsList.addAll(list);
notifyDataSetChanged();
}
public void clear() {
allFeedsList = new ArrayList<FeedsDto>();
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return allFeedsList.size();
}
public void updateFeeds(String feedsId, com.aimdek.healthwel.dto.Response response, int type) {
FeedsDto dto = getFeedsDto(feedsId);
if (Validator.isNotNull(dto)) {
if (type == Request.LIKE_UNLIKE) {
dto.getFeeds().setLikeCount(response.getCount());
dto.setLiked(response.isLiked());
} else {
dto.getFeeds().setCommentCount(response.getCount());
}
}
notifyDataSetChanged();
}
public FeedsDto getFeedsDto(String feedsId) {
for (FeedsDto dto : allFeedsList) {
if (dto.getFeeds().getId().equals(feedsId)) {
return dto;
}
}
return null;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.img_user_pic)
ImageView userImg;
@Bind(R.id.tv_user_name)
TextView tvUserName;
@Bind(R.id.tv_duration)
TextView tvDuration;
@Bind(R.id.tv_msg)
TextView tvMsg;
@Bind(R.id.workout_map_summary)
MapView mapView;
@Bind(R.id.et_feeds_comment)
EditText etComment;
@Bind(R.id.tv_post)
TextView tvPost;
@Bind(R.id.img_like_btn)
ImageButton likeBtn;
@Bind(R.id.img_comment_btn)
ImageButton commentBtn;
@Bind(R.id.tv_like_count)
TextView tvLikecount;
@Bind(R.id.tv_comment_count)
TextView tvCommentcount;
public MyViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
当用户喜欢或评论特定的提要时,我调用 fragment 类方法来更新它,并且我在应用程序中显示 friend 的提要。当我显示个别 friend 的提要时,这会造成泄漏关于如何解决这个问题的任何想法。任何帮助都是应用
最佳答案
您应该在焦点窗口消失时释放 mNextServedView(例如 onStop 或 onDestory)。
代码如下:
InputMethodManager methodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
try {
Field mNextServedView = methodManager.getClass().getDeclaredField("mNextServedView");
mNextServedView.setAccessible(true);
mNextServedView.set(methodManager, null);
Field mServedView = methodManager.getClass().getDeclaredField("mServedView");
mServedView.setAccessible(true);
mServedView.set(methodManager, null);
Method method = methodManager.getClass().getDeclaredMethod("finishInputLocked");
method.setAccessible(true);
method.invoke(methodManager);
} catch (Throwable e) {
e.printStackTrace();
}
关于android - 无法从 Leakcanary 的泄漏报告中检测到引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970320/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: template pass by value or const reference or…? 以下对于将函数
我用相同的参数列表重载了一个运算符两次。但返回类型不同: T& operator()(par_list){blablabla} const T& operator()(par_list){bla
假设我有实现接口(interface) I 的 Activity A。我的 ViewModel 类 (VM) 持有对实现接口(interface) I 的对象的引用: class A extends
PHP 如何解释 &$this ?为什么允许? 我遇到了以下问题,这看起来像是 PHP 7.1 和 7.2 中的错误。它与 &$this 引用和跨命名空间调用以及 call_user_func_arr
谁能解释一下下面“&”的作用: class TEST { } $abc =& new TEST(); 我知道这是引用。但是有人可以说明我为什么以及什么时候需要这样的东西吗?或者给我指向一个对此有很好解
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 C++ 引用 vs 指针 引用很容易与指针混淆,它们之间有三
目录 引言 背景 结论 引言 我选择写C++中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受是因为我主持过很多C++的面试,并且我很少
Perl 中的引用是指一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至函数,可以应用在程序的任何地方 创建引用 定义变量的时候,在变量名前面加个 \,就得到了这个变量的一个引用 $sc
我编写了一个将从主脚本加载的 Perl 模块。该模块使用在主脚本中定义的子程序(我不是维护者)。 对于主脚本中的一个子例程,需要扩展,但我不想修补主脚本。相反,我想覆盖我的模块中的函数并保存对原始子例
我花了几个小时试图掌握 F# Quotations,但我遇到了一些障碍。我的要求是从可区分的联合类型中取出简单的函数(只是整数、+、-、/、*)并生成一个表达式树,最终将用于生成 C 代码。我知道使用
很多时候,问题(尤其是那些标记为 regex 的问题)询问验证密码的方法。似乎用户通常会寻求密码验证方法,包括确保密码包含特定字符、匹配特定模式和/或遵守最少字符数。这篇文章旨在帮助用户找到合适的密码
我想通过 MIN 函数内的地址(例如,C800)引用包含文本的最后一个单元格。你能帮忙吗? Sub Set_Formula() ' ----------------------------- Dim
使用常规的 for 循环,我可以做类似的事情: for (let i = 0; i < objects.length; i++) { delete objects[i]; } 常规的 for-
在 Cucumber 中,您定义了定义 BDD 语法的步骤;例如,您的测试可能有: When I navigate to step 3 然后你可以定义一个步骤: When /^I navigate t
这是什么UnaryExpression的目的,以及应该怎样使用? 最佳答案 它需要一个 Expression对象并用另一个 Expression 包裹它.例如,如果您有一个用于 lambda 的表达式
给出以下内容 $("#identifier div:first, #idetifier2").fadeOut(300,function() { // I need to reference jus
我不知道我要找的东西的正确术语,但我要找的是一个完整的引用,可以放在双引号之间的语句,比如 *, node()、@* 以及所有列出的 here加上任何其他存在的。 我链接到的答案提供了一些细节,但还
This question's answers are a community effort。编辑现有答案以改善此职位。它当前不接受新的答案或互动。 这是什么? 这是常见问答的集合。这也是一个社区Wi
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
考虑下一个代码: fn get_ref(slice: &'a Vec, f: fn(&'a Vec) -> R) -> R where R: 'a, { f(slice) } fn m
我是一名优秀的程序员,十分优秀!