java.lang.RuntimeException:执行在android中未恢复的活动的停止

时间:2015-11-10 08:58:15

标签: java android

我正在做一个项目好几天,工作正常。但是今天我在模拟器应用程序中运行了我的应用程序,在启动画面上暂停而没有进入主要活动并显示错误: - Performing stop of activity that is not resumeava.lang.RuntimeException: Performing stop of activity that is not resumed

我的SplashScreen.java: -

public class SplashScreen extends AppCompatActivity {

    private static int SPLASH_TIME_OUT = 3000;
    Boolean flag = false;
    public static Activity activity_splash;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.splash_screen);

    }
    public void onResume(){
        super.onResume();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);
    }

}

我的Logcat: -

11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: java.lang.RuntimeException: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3465)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3550)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.-wrap20(ActivityThread.java)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Handler.dispatchMessage(Handler.java:102)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Looper.loop(Looper.java:148)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.main(ActivityThread.java:5417)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    11-10 13:56:01.721 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: java.lang.RuntimeException: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3465)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3550)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.-wrap20(ActivityThread.java)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Handler.dispatchMessage(Handler.java:102)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Looper.loop(Looper.java:148)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.main(ActivityThread.java:5417)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    11-10 13:56:04.262 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread: java.lang.RuntimeException: Performing stop of activity that is not resumed: {shoppingmazza.android.catalyst.com.shoppingmazza/shoppingmazza.android.catalyst.com.shoppingmazza.activity.MainActivity}
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3465)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3550)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.-wrap20(ActivityThread.java)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Handler.dispatchMessage(Handler.java:102)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.os.Looper.loop(Looper.java:148)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at android.app.ActivityThread.main(ActivityThread.java:5417)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at java.lang.reflect.Method.invoke(Native Method)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    11-10 13:56:06.857 1995-1995/shoppingmazza.android.catalyst.com.shoppingmazza E/ActivityThread:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

MainActivity.java: -

public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

        // flag for Internet connection status
        Boolean isInternetPresent = false;

        // Connection detector class
        ConnectionDetector cd;

        private static String TAG = MainActivity.class.getSimpleName();

        AlertDialogManager alert = new AlertDialogManager();

        // Session Manager Class
        UserSessionManager session;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            // Session class instance
            session = new UserSessionManager(getApplicationContext());
            Toolbar  mToolbar = (Toolbar) findViewById(R.id.toolbar);

            setSupportActionBar(mToolbar);
            getSupportActionBar().setTitle(null);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);

            cd = new ConnectionDetector(getApplicationContext());

            isInternetPresent = cd.isConnectingToInternet();

            // check for Internet status
            if (isInternetPresent) {
                FragmentDrawer   drawerFragment = (FragmentDrawer)
                        getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
                drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
                drawerFragment.setDrawerListener(this);

                // display the first navigation drawer view on app launch
                displayView(0);
            }
            else {

                alert.showAlertDialog(MainActivity.this, "No Internet Connection",
                        "You don't have internet connection.", false);
            }

        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch(item.getItemId()){
                case R.id.action_search:
                    Intent search = new Intent(MainActivity.this,SearchActivity.class);
                    startActivity(search);
                    return true;
                case R.id.login:
                    if(session.checkLogin())
                        finish();
                    else {
                            Intent intent = new Intent(MainActivity.this,MyAccount.class);
                                startActivity(intent);
                    }
                    return true;
                case R.id.my_order:
                    alert.showAlertDialog(MainActivity.this,"Alert","This Page Under Maintenance",false);
                    return true;
                case R.id.wishlist:
                    if(session.checkLogin()){
                        finish();
                    }
                    else {
                        Intent wishlistIntent = new Intent(MainActivity.this,WishList.class);
                        startActivity(wishlistIntent);
                    }

                default:
                    return super.onOptionsItemSelected(item);
            }
        }

        @Override
        public void onDrawerItemSelected(View view, int position) {
            displayView(position);
        }

        private void displayView(int position) {
            Fragment fragment = null;
            String title = getString(R.string.app_name);
            switch (position) {
                case 0:
                  /*  fragment = new HomeFragment();
                    title = getString(R.string.title_home);*/
                    Intent intentHome = new Intent(MainActivity.this,MainActivity.class);
                    startActivity(intentHome);
                    break;
                case 1:
                    Intent intent = new Intent(MainActivity.this,ShopByCategory.class);
                    startActivity(intent);

                    break;
                case 2:

                    break;
                case 3:
                   /* Intent intentTodayDeal = new Intent(MainActivity.this,TodayDeal.class);
                    startActivity(intentTodayDeal);*/
                    /*Intent intent = new Intent(MainActivity.this,ShopByCategory.class);
                    startActivity(intent);*/
                    break;
                case 4:
                    Intent intentTrackYourOrder = new Intent(MainActivity.this,MainActivity.class);
                    startActivity(intentTrackYourOrder);
                    break;
                case 5:
                    Intent intentLegal = new Intent(MainActivity.this,Legal.class);
                    startActivity(intentLegal);
                    break;
                case 6:
                    break;
                case 7:
                    break;
                case 8:
                    break;
                case 9:
                    break;
                default:
                    break;
            }

            if (fragment != null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.container_body, fragment);
                fragmentTransaction.commit();

                // set the toolbar title
                getSupportActionBar().setTitle(null);
                getSupportActionBar().setLogo(R.drawable.ic_launcher);
            }
        }

    }

8 个答案:

答案 0 :(得分:19)

onCreate的{​​{1}}中,如果有互联网访问权限,您将拨打MainActivity。在displayView(0);

displayView

在这里,您再次启动case 0: Intent intentHome = new Intent(MainActivity.this,MainActivity.class); startActivity(intentHome); break; ,因此应用程序陷入无限循环。最终它崩溃了。

答案 1 :(得分:3)

Splash是正确的。 问题是记忆。

如果应用互联网始终呼叫displayView(0);,则会打开另一个类型为MainActivity的活动

 private void displayView(int position) {
            switch (position) {
                case 0: 
                    Intent intentHome = new Intent(MainActivity.this,MainActivity.class);
                    startActivity(intentHome);
                    break;

循环意图直到内存不足

enter image description here

要解决此问题,请停止调用相同的活动。

答案 2 :(得分:2)

尝试从处理程序中取出finish()并在Splash Activity的onPause()中调用它。

如果说我正在制作启动画面,我可能会把它作为主屏幕布局的一部分,然后在一段时间后隐藏它。这样我根本不需要启动活动。

答案 3 :(得分:2)

将此代码从 onResume() 移至 onCreate()

 new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);
                finish();
            }
        }, SPLASH_TIME_OUT);

答案 4 :(得分:1)

尝试将日志放在此处。我会在startActivity(i)之后立即查看finish();是否被执行过。您似乎在 MainActivity onCreate()方法中进入无限循环。 MainActivity onResume()永远不会完成,因此您会遇到异常。

答案 5 :(得分:1)

尝试将新的Handler()...代码块放在onCreate()方法中。

答案 6 :(得分:1)

将后延迟调用移入onCreate()。 在调用finish();

之前添加check isResumed()

答案 7 :(得分:1)

将onResume()方法重命名为onStart()

public class SplashScreen extends AppCompatActivity {

private static int SPLASH_TIME_OUT = 3000;
Boolean flag = false;
public static Activity activity_splash;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.splash_screen);

}
public void onStart(){
    super.onResume();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
}

}