- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了由 AudioManager 引起的内存泄漏。所以我在我的代码中注释掉了这一行,看看它是否能解决我的问题:
public class FireRoomActivity extends Activity {
AudioManager am;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
}
}
它确实解决了问题,我不再有内存泄漏。是因为 Context.AUDIO_SERVICE 吗?如果是,我该如何更换它?
如果重要的话,我的 Activity 中有这个非静态类,它不会在外部其他地方使用
class GestureListener extends GestureDetector.SimpleOnGestureListener {
RelativeLayout parentLayout;
public void setLayout(RelativeLayout layout){
parentLayout = layout; }
@Override
public boolean onDown(MotionEvent e) {
return true;
}
// event when double tap occurs
@Override
public boolean onDoubleTap(MotionEvent e) {
makeArrowsVisible();
parentLayout.findViewById(R.id.cabinet_zoomed).setVisibility(View.INVISIBLE);
Button key = (Button)parentLayout.findViewById(R.id.key);
if(key!=null){
key.setVisibility(View.INVISIBLE);}
return true;
}
编辑:堆转储的屏幕截图
最佳答案
https://gist.github.com/jankovd/891d96f476f7a9ce24e2 中提到的修复为我工作。
public class ActivityUsingVideoView extends Activity {
@Override protected void attachBaseContext(Context base) {
super.attachBaseContext(AudioServiceActivityLeak.preventLeakOf(base));
}
}
/**
* Fixes a leak caused by AudioManager using an Activity context.
* Tracked at https://android-review.googlesource.com/#/c/140481/1 and
* https://github.com/square/leakcanary/issues/205
*/
public class AudioServiceActivityLeak extends ContextWrapper {
AudioServiceActivityLeak(Context base) {
super(base);
}
public static ContextWrapper preventLeakOf(Context base) {
return new AudioServiceActivityLeak(base);
}
@Override public Object getSystemService(String name) {
if (Context.AUDIO_SERVICE.equals(name)) {
return getApplicationContext().getSystemService(name);
}
return super.getSystemService(name);
}
}
感谢 Dejan Jankov :)
关于android - (AudioManager)getSystemService(Context.AUDIO_SERVICE) 导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244288/
目前,关闭通知的唯一方法是按下停止按钮。但我想知道如何用可滑动的“东西”来包装通知小部件。你能告诉我任何适用于此的包或我必须从 audio_service 包中打包东西的代码吗? audio_serv
我想创建一个应用程序,根据某些设置挂断来电,这在 Android 1.6 上似乎是不可能的。因此,我决定编写一个应用程序,在调用挂断时将振铃器更改为静音。问题是当我调用 getSystemServic
我只想添加audio_service https://pub.dartlang.org/packages/audio_service#-readme-tab-到我的应用程序。用于播放音频。但是没有获得
我在歌曲屏幕上有歌曲列表。如果用户单击列表中的一个项目,我调用 loadFirstPlaylist() 将歌曲列表(专辑中的所有歌曲)加载到队列中,然后跳过队列并播放。它在 android 上工作,但
我想弄清楚在哪里可以更改 audio_service 包中通知栏中显示的内容。更具体地说,你能告诉我在哪里可以从通知栏中删除 slider (搜索栏)吗? (直到您展开栏才会显示)。或者通过在其上方添
我正在添加 audio_service 在后台运行音频的包。在 android 中它可以工作,但作者没有在 iOS 中实现,所以在 iOS 中运行应用程序时会出现以下错误。 错误: Launching
我遇到了由 AudioManager 引起的内存泄漏。所以我在我的代码中注释掉了这一行,看看它是否能解决我的问题: public class FireRoomActivity extends Acti
我尝试阅读 Github 上的项目自述文件和问题,看看是否可以使用 just_audio 同时播放两个或多个音频文件。和 audio_service Flutter 的插件。有没有人使用这些插件或类似
我是一名优秀的程序员,十分优秀!