如何解决在Android中第一个方法完全执行后,如何执行第二个方法?
我有四种方法,它们必须一个接一个地执行。因此,这意味着第二种方法必须等到第一种方法完全执行。
在我的情况下,我的IfElse
语句中有以下方法。它们的执行就像第二种方法在第一种方法中执行了一部分后执行一样。就像异步方式一样。
if(flag.equalsIgnoreCase("flag2"))
{method1();
}else if(flag.equalsIgnoreCase("flag3")){
method2();
}else if(flag.equalsIgnoreCase("flag4"))
{ method3();
}
setCommonData();
setRecyclerAdapter();
synchronized void method1()
{
Log.e("filter","======");
Class 1 class1=new Class1(this,GET,response->{
Log.e("response",""===success====);
});
NetworkManager.getInstance(this).sendRequest(class1);
}
其余方法与method 1
实现相同。
我还通过在onBackground
和onPostExecute
中调用两个方法来使用AsyncTasks。
我已经将线程与t.start()
和t.join();
一起使用。但是同样那些异步调用。
就我而言,我需要一个一个地执行这些方法。请一些帮助我解决这个问题。
解决方法
从不同线程调用这些方法时,可以在方法声明中添加synchronized
关键字,以使method2等到method1返回:
synchronized void method1() { ...code for method1... }
synchronized void method2() { ...code for method2... }
synchronized void method3() { ...code for method3... }
synchronized
关键字使线程在当前对象的监视器上获得排他锁。如果另一个线程已经持有该锁,则新调用将等待,直到锁释放为止。不使用synchronized
关键字的方法不会受到影响,因为它们不需要锁。
一种可能更简单的解决方案是首先不要使用不同的线程。如果您只使用一个线程池,那么一个方法调用自然必须等待前一个方法完成。但是,为了向您展示如何做到这一点,您首先应该向我们展示如何首先调用这些方法。
,您可能想使用回调,将方法彼此传递。
我正在将solution链接到P Burke的帖子(它在JS中,但您仍然需要逻辑)上可以接受的答案,该链接还可以指定调用的顺序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。