簡體   English   中英

java.lang.RuntimeException:執行在android中未恢復的活動的停止

[英]java.lang.RuntimeException: Performing stop of activity that is not resumed in android

我正在做一個項目好幾天,工作正常。 但今天我在模擬器應用程序中運行我的應用程序,暫停在啟動畫面上不進行主要活動並且顯示錯誤: - Performing stop of activity that is not resume ava.lang.RuntimeException: Performing stop of activity that is not resumedava.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);
            }
        }

    }

MainActivity onCreate中,如果有互聯網訪問,你將調用displayView(0); displayView

case 0:
     Intent intentHome = new Intent(MainActivity.this,MainActivity.class);
     startActivity(intentHome);
     break;

在這里,您再次啟動MainActivity ,因此應用程序陷入無限循環。 最終它崩潰了。

Splash是正確的。 問題是記憶。

如果App有互聯網總是調用displayView(0); 這將打開另一個MainActivity類型的活動

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

循環意圖直到你內存不足

在此輸入圖像描述

要解決此問題,請停止調用相同的活動。

嘗試從處理程序中取出finish()並在Splash Activity的onPause()中調用它。

也就是說,如果我正在進行啟動畫面,我可能會將其作為主屏幕布局的一部分,然后在一段時間后隱藏它。 這樣我根本不需要啟動活動。

將此代碼從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);

嘗試將日志放在此處。 我會在startActivity(i)立即查看是否finish(); 永遠執行。 看來你在MainActivity onCreate()方法中進入了無限循環。 MainActivityonResume()永遠不會完成,所以你得到一個例外。

嘗試將新的Handler()...代碼塊放在onCreate()方法中。

將后延遲調用移動到onCreate()。 在調用finish()之前添加check isResumed();

將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);
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM