我正在编写一个包含服务的应用程序,并从服务中安装OBB文件。 我在提及此文档:http://developer.android.com/reference/android/os/storage/StorageManager.html http://developer.android.com/reference/android/os/storage/OnObbStateChangeListener.html
但是,onObbStateChange()回调永远不会发生。
如果我在应用程序的活动中使用相同的代码,它会成功安装并访问OBB文件的内部。
以下是代码段:
// Extend OnObbStateChangeListener class
public class MyService extends Service {
static StorageManager storageManager;
static class Observer extends OnObbStateChangeListener {
@Override
public void onObbStateChange(String path, int state) {
Log.v(TAG, path + " " + state); // 1
}
}
}
// Mount obb
public void getMountedPath() {
File file = new File("<path to obb file>");
if(!obbFile.exists())
return;
Observer observer = new Observer();
boolean state = storageManager.mountObb(obbFile.getAbsolutePath(), null, obbObserver);
Log.v(TAG, "state: " + state); // 2 It always prints TRUE
}
知道为什么它无法从我的服务类挂载?
更多观察结果:
当我第一次执行应用程序时,我在第二个日志语句中将mount状态设置为TRUE,并且不会调用onObbStateChange()。
然而,当我第二次运行我的应用程序时,我看到onObbStateChange()的第一个日志,它打印状态为24,这意味着ERROR_ALREADY_MOUNTED。
所以似乎obb在第一次尝试中被挂载,但是onObbStateChange()由于某种原因没有被调用。
有关此行为的任何解释?