小编dig*_*ino的帖子

如何从内存中清除动态创建的视图?

我试图从记忆中清除一些观点.

这是情况.我有一个活动,我称之为A和另一个B.

现在我按下活动A中的一个按钮,调用活动B,动态创建大量视图.之后,我按回按钮返回活动A重复这两个步骤很多次.

结果是,在DDMS中,对象和内存的数量分配的静止图像增长(对象数量增加了88,分配了0,002MB)这意味着视图不会从内存中删除!

如何从内存中完全清除视图?

谢谢 !

更新 - 在这里您可以获得一些新信息

基本上,在我的"真实世界"中,我只有很多次创建的Activity.发生这种情况是因为我必须与Web服务进行通信,并且所有响应都是在此活动的新实例中创建的.

我尝试使用下面的代码解决此问题

@Override
protected void onDestroy() {
    super.onDestroy();      
    nullViewDrawablesRecursive(mRootView);
    mRootView = null;
    System.gc();
}
Run Code Online (Sandbox Code Playgroud)

那是我的nullViewDrawablesRecursive

private void nullViewDrawablesRecursive(View view) {
    if (view != null) {
        try {
            ViewGroup viewGroup = (ViewGroup) view;


            int childCount = viewGroup.getChildCount();
            for (int index = 0; index < childCount; index++) {
                View child = viewGroup.getChildAt(index);
                nullViewDrawablesRecursive(child);
            }
        } catch (Exception e) {
        }

        nullViewDrawable(view);
    }
}
Run Code Online (Sandbox Code Playgroud)

那是我的nullViewDrawable

private void nullViewDrawable(View view) {
    try {
        view.setBackgroundDrawable(null); …
Run Code Online (Sandbox Code Playgroud)

memory android view clear

6
推荐指数
1
解决办法
9063
查看次数

带有类引用的自定义属性

我正在尝试创建一个行为类似于tools:context的自定义属性,即

  • Android Studio 自动完成功能
  • 项目类名参考
  • 支持自动重构以防我更改我的类目录

这是我的resources.xml

<declare-styleable name="RecyclerView">
    <attr name="adapter" format="string"></attr>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

这是用法

    <example.com.br.appname.RecyclerView
         android:id="@+id/accounts"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_marginTop="8dp"
         app:adapter="example.com.br.appname.AccountAdapter" >
    </example.com.br.appname.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

我试过使用格式参考,但它也没有编译。

错误:(17, 22) 不允许字符串类型(在“适配器”处,值为“example.com.br.appname.AccountAdapter”)。

android

6
推荐指数
1
解决办法
991
查看次数

WorkManager google api:为每个定期工作人员执行等待 15 分钟?

有没有办法从 WorkManager Google API测试PERIODIC工作人员,而无需为每次执行至少等待 15 分钟?

我的意思是,它是一个调试应用程序,我正在通过 Android Studio 运行它,我不想等待这么长时间来测试我的功能。

android android-workmanager

6
推荐指数
1
解决办法
1976
查看次数

WebStorm幽灵断点

有时我的 WebStorm 会遇到不存在的断点,这非常烦人。 在此输入图像描述

我试图将它们全部删除,但没有成功。唯一有效的方法是重新启动 IDE,这是“烦人”的部分。

有什么技巧可以更快地修复它吗?

我的 Webstorm 版本是 2016.2.3 我没有测试用例来完成这种情况,但是当我使用实时编辑功能并编辑代码时,即使 IDE 已经停止到断点,这种情况也会更频繁地发生等待“重新加载脚本”消息。

debugging breakpoints webstorm

5
推荐指数
0
解决办法
207
查看次数

为什么Camera.PictureCallback()的图像分辨率是PreviewSize的大小?

我正在尝试使用Android Camera API但是当我拍照时,它的分辨率与我的Camera对象previewSize分辨率相同.

一些代码解释:

private Camera mCamera;
private Camera.PictureCallback mPictureCallback;

...
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
...
Camera.Parameters p = mCamera.getParameters();
        p.setPreviewSize(mPreviewWidth, mPreviewHeight);
        p.setPictureSize(mPictureWidth,mPictureHeight);
mCamera.setParameters(p);
...
}

public void onPictureTaken(byte[] imageData, Camera c) {
                Bitmap bitmapPicture = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
                bitmapPicture.getWidth(); //At this point the width is the same as mPreviewWidth and I want it to be mPictureWidth
}
/**
* This function is called when the user touches the surfaceview
*/
public void …
Run Code Online (Sandbox Code Playgroud)

size camera android image

1
推荐指数
1
解决办法
1779
查看次数