有没有办法替换库类?

时间:2016-05-30 13:41:38

标签: java android android-ndk

让我们说很多功能都使用了这个类test.MyClass中的方法,但它非常慢,我想在JNI中编码以期改善时间...

有没有办法替换test.MyClass以便不需要更改库,但是从现在开始,库中的代码将使用新的.Skip(0), .Take(10); .Skip(10), .Take(10); .Skip(20), .Take(10); <...> 和某些方法的本机实现?这是经典的#34; PC很好,但Android的时机是废话&#34;问题

1 个答案:

答案 0 :(得分:-1)

只需在与要覆盖的包中相同的包/层次结构中创建public class Observable { public interface Observer { void notify(List<Object> results); } private HandlerThread handlerThread; private List<Object> results = new ArrayList<>(); private final Map<Observer, ObserverWrapper> observers = new HashMap<>(); private void working() { //Critial section... //modifying results list... synchronized (observers) { for (ObserverWrapper wrapper : observers.values()) { wrapper.notify(results); } } } public void register(Observer observer, Handler handler) { synchronized (observers) { //Create observer wrapper and add to map here... } } public void unregister(Observer observer) { synchronized (observers) { //Remove observer from the map... } } private static final class ObserverWrapper { private final Observer observer; private final Handler handler; public ObserverWrapper(Observer observer, Handler handler) { this.observer = observer; this.handler = handler; } public void notify(final List<Object> results) { //The observable thread handler.post(new Runnable() { void run() { //The observer thread //Critical section... observer.notify(results); } }); } } } 即可。 test.MyClass应首先加载您的实现,如果它尝试从其他库加载该实现,则加载将失败,因为类路径中只能有一个已加载的实例。