我有一个activity
里面包含一个ViewPager
。ViewPagerAdapter
是FragmentStatePagerAdapter
. 每个页面都是Fragment
.TheFragment
包含许多线程。我的问题是,当页面更改时,我必须停止片段内的所有线程ViewPager's
。我该怎么做?
问问题
2871 次
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 回答