4

我有一个activity里面包含一个ViewPager。ViewPagerAdapterFragmentStatePagerAdapter. 每个页面都是Fragment.TheFragment包含许多线程。我的问题是,当页面更改时,我必须停止片段内的所有线程ViewPager's。我该怎么做?

4

2 回答 2

9

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

你的片段:

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 
     }
}

希望它会有所帮助。

于 2013-09-03T13:06:04.843 回答
1

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

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

另外,你可以等待一定的时间让你的 Thread 使用 Timer 优雅地完成,然后在超时时终止它们。

请看一下java.lang.Thread


为了让它更容易实现,你可以使用ThreadPoolExecutor或 java.util.concurrent 包的其他一些助手。

于 2013-09-03T13:09:22.173 回答