1

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

如果我没有为我的应用程序启用可访问性服务,它会在我关闭我的应用程序后很快释放它的所有内存,并且在另一个服务运行时最终只有 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);
    }

...
}

正如您在上面看到的那样简单,我没有在无障碍服务类中编写任何代码,但是当从设置-> 无障碍启用无障碍时,它仍然不允许释放我的应用程序内存。

4

2 回答 2

1

将您的权限放在应用程序标签之外

 <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
 <application>....</application> 
于 2013-09-06T07:14:22.777 回答
0

到目前为止,对于这个问题,我正在终止我的进程以释放持有的内存。

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

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

于 2013-09-06T15:07:34.953 回答