活动和碎片之间的Android通信



我有一个包含ViewPageractivity。ViewPager的AdapterFragmentStatePagerAdapter。每个页面都是FragmentFragment包含多个线程。我的问题是,当ViewPager's页面更改时,我必须停止片段内的所有线程。我该怎么做?

您已经询问了使用接口实现的活动和片段之间的通信

您的片段:

public class YourFragment
    extends Fragment{
private OnListener listener;
 public interface OnListener
    {
        void onChange();
    }
void initialize( OnListener listener)
{
        this.listener = listener;
}

//onview pager change call your interface method that will go to the activity as it has the listener for interface. 
listener.onChange();
}

您的活动:

public class yourActivity
    extends Activity
    implements yourFragment.OnListener
{
// intialize the method of fragment to set listener for interface where you define fragment.
yourFragment.initialize( this );
// implement what you want to do in interface method.
@Override
    public void onChange()
    {
     // implement what you want to do 
     }
}

希望它能有所帮助。

Android的应用程序哲学是杀死进程,所以也许遵循同样的想法,你可以杀死线程。但是要注意,如果线程拥有锁或监视器,这可能会导致死锁。

对我来说,一种更严肃的方法似乎是使用"活动"中的Thread.interrupt()。然后你的片段中的线程必须检查Thread.interrupt是否有中断,如果它们被中断了,就优雅地完成。
如果您想要一些同步行为,可以使用Thread.join()

此外,您可以等待一定的时间,让线程使用计时器优雅地完成,然后在超时时杀死它们

请查看java.lang.Thread


为了使其更容易实现,可以使用ThreadPoolExecutor或java.util.concurrent包的其他帮助程序。

相关内容

  • 没有找到相关文章

最新更新