Android 应用程序在后台时崩溃

Android 应用程序在后台时崩溃,android,android-viewpager,Android,Android Viewpager,我从API中获取数据,并将其显示在ViewPager中,然后用计时器自动滑动ViewPager,当我将应用程序放在后台并再次打开它时,它崩溃了 java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{317597f7 V.ED.... R......D 0,0-160,160} not attached to window manager

我从API中获取数据,并将其显示在
ViewPager
中,然后用计时器自动滑动
ViewPager
,当我将应用程序放在后台并再次打开它时,它崩溃了

java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{317597f7 V.ED.... R......D 0,0-160,160} not attached to window manager
                                                                     at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:396)
                                                                     at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:322)
                                                                     at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116)
                                                                     at android.app.Dialog.dismissDialog(Dialog.java:341)
                                                                     at android.app.Dialog.dismiss(Dialog.java:324)
                                                                     at com.example.app.fragments.LatestNewsFragment$3.onSuccess(LatestNewsFragment.java:178)
                                                                     at com.example.app.fragments.LatestNewsFragment$3.onSuccess(LatestNewsFragment.java:126)
                                                                     at com.example.app.tools.connection.ServerTool$4.onSuccess(ServerTool.java:202)
                                                                     at com.example.app.tools.connection.ServerTool$4.onSuccess(ServerTool.java:197)
                                                                     at com.example.app.tools.connection.RetrofitTool$APICallBack.onResponse(RetrofitTool.java:71)
                                                                     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
这是崩溃的代码片段

 private void getLastNews() {
    if (dialogLoading == null) {
        dialogLoading = new LoadingDialog().showDialog(getActivity());
    }
    ServerTool.getLastNews(getActivity(), new ServerTool.APICallBack<List<NewsListModel>>() {
        @Override
        public void onSuccess(List<NewsListModel> response) {

            Log.d("response list", response.size() + "");
            newsList = response;
            NewsPagerAdapter helpAdapter = new NewsPagerAdapter(getActivity(), newsList);
            viewPagerImage.setAdapter(helpAdapter);
            timer = new Timer();
            viewPagerImage.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                }

                @Override
                public void onPageSelected(int position) {
                    if (position < newsList.size()) {
                        if (position < currentPage) {
                            currentPage--;
                        } else {
                            currentPage++;
                        }
                    }
                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    if (getActivity() == null)
                        return;
                    if (isAdded())
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (currentPage < newsList.size()) {
                                    viewPagerImage.setCurrentItem(currentPage++, true);
                                } else {
                                    currentPage = 0;
                                    viewPagerImage.setCurrentItem(currentPage, true);
                                }
                            }

                        });
                }
            }, 300, 2500);
            if (dialogLoading.isShowing()) {
                dialogLoading.dismiss();
            }
        }

        @Override
        public void onFailed(int statusCode, ResponseBody responseBody) {

            Log.d("onFailed", responseBody + "");
            if (dialogLoading.isShowing()) {
                dialogLoading.dismiss();
            }
        }


    });


}
private void getLastNews(){
如果(dialogLoading==null){
dialogLoading=新建LoadingDialog().showDialog(getActivity());
}
ServerTool.getLastNews(getActivity(),新的ServerTool.APICallBack(){
@凌驾
成功时公共无效(列表响应){
Log.d(“响应列表”,response.size()+”);
新闻列表=响应;
NewsPagerAdapter帮助适配器=新的NewsPagerAdapter(getActivity(),newsList);
viewPagerImage.setAdapter(帮助适配器);
定时器=新定时器();
viewPagerImage.addOnPageChangeListener(新的ViewPager.OnPageChangeListener(){
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
if(位置
Add
(dialogLoading!=null&&dialogLoading.isShowing())
,然后关闭对话框。

一旦活动被隐藏,Android操作系统将立即销毁该活动。因此,需要在onDestroy的yout活动中解除dismissDialog

@Override
protected void onDestroy() {
 dialogLoading.dismiss();
super.onDestroy();
}

我们可以知道
LatestNewsFragment.java
的第178行是什么吗?它是dialogLoading.Disclease();我懂了。然后您应该添加一个空检查
对话框加载=在
对话框加载.isShowing()之前为null
。让我们知道这是否有效?:)还是一样的崩溃