Android 使用TabLayout和ViewPager挂起嵌套片段中的所有线程,应用程序将在没有任何崩溃对话框的情况下关闭

Android 使用TabLayout和ViewPager挂起嵌套片段中的所有线程,应用程序将在没有任何崩溃对话框的情况下关闭,android,android-fragments,android-tablayout,Android,Android Fragments,Android Tablayout,有一个main活动,它有各种片段,其中有使用自定义TabLayout和ViewPager的嵌套片段。嵌套片段的每个片段都使用WebServices将数据显示到ListView 其中一个片段如下: public class IndicesFragment extends android.support.v4.app.Fragment { public static IndicesFragment newInstance() { return new IndicesFragment();

有一个
main活动
,它有各种
片段
,其中有使用自定义
TabLayout
ViewPager
的嵌套片段。嵌套片段的每个
片段都使用
WebServices
将数据显示到
ListView

其中一个片段如下:

public class IndicesFragment extends android.support.v4.app.Fragment {

public static IndicesFragment newInstance() {
    return new IndicesFragment();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.equity_activity, container, false);
    act = this.getActivity();
    return view;
}


public void onActivityCreated(Bundle savedInstanceState1) {
    super.onActivityCreated(savedInstanceState1);
    setHasOptionsMenu(true);
    list = (ListView) view.findViewById(R.id.list_equity);
    if (Utils.isNetworkAvailable(getActivity())) {
        if (catListDao.size() > 0) {
            adapter = new AdvisorsAdapter(act, R.layout.custom_equity, catListDao, 0);
            list.setAdapter(adapter);
        } else {
            if (!isViewShown) {
                new FetchAllData(getActivity(), 3).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            }
        }
    } else {
        CustomToast toast = new CustomToast(getActivity(), "There is no internet connection!");
    }
}

@Override
public void onResume() {
    super.onResume();
    Constants.check_fragment_visible = 1;
    if (Constants.check_reload) {
        if (Utils.isNetworkAvailable(getActivity())) {
            new FetchAllData(getActivity(), 3).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        } else {
            CustomToast toast = new CustomToast(getActivity(), "There is no internet connection!");
        }
    }
    if (adapter != null) adapter.notifyDataSetChanged();

}
当我们从一个
Fragment
更改
Activity
时,我的应用程序会在没有任何
对话框的情况下崩溃,当我们从另一个
MainActivity
片段调用这个嵌套片段时,它会在那里冻结,嵌套片段的片段会在那里突然打开。挂起线程的堆栈跟踪如下所示:

  1-29 12:10:49.580 10853-10863/com.cws.advisorymandi W/art: Suspending all threads took: 10.409ms
 01-29 12:10:49.707 10853-10853/com.cws.advisorymandi D/cr_Ime: [InputMethodManagerWrapper.java:27] Constructor
 01-29 12:10:49.711 10853-10853/com.cws.advisorymandi D/cr_Ime: [ImeAdapter.java:241] attach
 01-29 12:10:49.711 10853-10853/com.cws.advisorymandi W/art: Attempt to remove local handle scope entry from IRT, ignoring
 01-29 12:10:49.716 10853-10853/com.cws.advisorymandi W/AwContents: onDetachedFromWindow called when already detached. Ignoring
 01-29 12:10:49.717 10853-10853/com.cws.advisorymandi D/cr_Ime: [InputMethodManagerWrapper.java:56] isActive: false
 01-29 12:10:49.726 10853-10853/com.cws.advisorymandi W/art: Attempt to remove local handle scope entry from IRT, ignoring
 01-29 12:10:49.726 10853-10853/com.cws.advisorymandi W/art: Attempt to remove local handle scope entry from IRT, ignoring
 01-29 12:10:49.812 10853-10853/com.cws.advisorymandi D/cr_Ime: [ImeAdapter.java:241] attach
 01-29 12:10:49.832 10853-10853/com.cws.advisorymandi D/cr_Ime: [ImeAdapter.java:241] attach
 01-29 12:10:49.833 10853-10853/com.cws.advisorymandi I/Choreographer: Skipped 58 frames!  The application may be doing too much work on its main thread.
 01-29 12:10:50.075 10853-10853/com.cws.advisorymandi W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 10853
 01-29 12:10:50.610 10853-10863/com.cws.advisorymandi W/art: Suspending all threads took: 43.636ms
 01-29 12:10:50.621 10853-10853/com.cws.advisorymandi I/Ads: Scheduling ad refresh 60000 milliseconds from now.
 01-29 12:10:50.630 10853-10853/com.cws.advisorymandi I/Ads: Ad finished loading.

您有内存问题。您可以尝试各种策略来帮助最小化冲突,例如隐藏用户看不到的片段的根视图,以及编写高效的代码。您有内存问题。您可以尝试各种策略来帮助最小化冲突,例如隐藏用户看不到的片段的根视图,以及编写高效的代码。