辅助功能服务不允许释放应用程序内存

时间:2013-09-06 07:00:55

标签: 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>

MyAccessibilityService.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);
    }

...
}

就像你上面看到的一样简单,我在辅助功能服务类中没有编码,但是当从设置启用辅助功能时,它仍然不允许释放我的应用程序内存 - &gt;可访问性。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

截至目前,对于这个问题,我正在杀死我的进程以释放持有的内存。

android.os.Process.killProcess(android.os.Process.myPid());

此工作正常,没有任何问题,但不建议这样做。