android - 无障碍服务不允许释放应用程序内存

标签 android memory accessibility

我在我的应用中使用了一项普通服务和一项无障碍服务

如果我没有为我的应用程序启用辅助功能服务,它会在我关闭我的应用程序后很快释放所有内存,并在另一个服务运行时最终只占用 2.7mb。

但是在我启用辅助功能服务后,它会占用我所有的应用程序内存,并且即使在很长一段时间后也不会释放它。

出于测试目的,我使用了一个空的无障碍服务类,其中没有任何内容,但它仍然占据了我的应用内存近 30mb。

请帮我解决这个问题。非常感谢您的建议 以下是我使用过的代码

AndroidManifest.xml

<application>
....
  <service android:name="com.test.service.MyAccessibilityService"
      android:label="@string/accessibility_service_label">
    <intent-filter>
      <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
  </service>
  <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
....
</application>

我的AccessibilityService.java

public class MyAccessibilityService extends AccessibilityService {
...
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {

      System.out.println("My event: "+event.getText().toString());
    }

    @Override
    public void onInterrupt() {
    }

    @Override
    public void onServiceConnected() {

     AccessibilityServiceInfo info = new AccessibilityServiceInfo();
     info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
     info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
     info.notificationTimeout = 100;
     setServiceInfo(info);
    }

...
}

就像您在上面看到的一样简单,我没有在辅助功能服务类中编写任何代码,但是当通过设置 -> 辅助功能启用辅助功能时,它仍然不允许释放我的应用程序内存。

最佳答案

将您的许可放在应用程序标签之外

 <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
 <application>....</application> 

关于android - 无障碍服务不允许释放应用程序内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651792/

相关文章:

android - 无法在 Android 设备的省电模式下以编程方式检查网络信息

android - 在线广告的类型有什么区别?

java - 如何在 Google map 上显示这两个标记?

c++ - 如何最好地利用 wcsdup?

angular - 辅助功能-Angular 中的路线更改时焦点丢失

android - 如何在android中将圆形 ImageView 背景设置为黑色?

function - 为什么宏比同等定义的函数占用更多空间?

java - JVM 字符串存储在内存中

ios - 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

html - 如何出于可访问性原因忽略装饰文本