在背面按下闪屏显示而不是最后打开的屏幕

时间:2017-10-11 10:41:58

标签: android onbackpressed

我正在制作一个Android应用程序。当我打开应用程序启动画面显示然后它进入mainactivity。现在,如果用户按下后退按钮并从最小化按钮打开应用程序。它再次显示飞溅而不是主动。任何人都可以帮我解决这个问题吗?以下是启动活动的代码,请检查并给出解决方案。

飞溅

 new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {

                fcm_id = FirebaseInstanceId.getInstance().getToken();
                session = new SessionManager(getApplicationContext());

                usermyid=session.userID();
                if(usermyid!=null)
                {
                    System.out.println("usermyid is not null"+usermyid);
                    usermyid=session.userID();
                    userd=Long.parseLong(usermyid);
                }
                else
                {
                    System.out.println("usermyid is  null"+usermyid);
                    android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
                            Settings.Secure.ANDROID_ID);
                    System.out.println("Without Exclude alphabets"+android_id);

                    android_id = android_id.replaceAll("[^\\d.]", "");
                    System.out.println("After Exclude alphabets"+android_id);
                    long x=Long.parseLong(android_id);
                    x*=-1;

                    System.out.println("Final Id" + x);
                    session_id = String.valueOf(x);
                    System.out.println("sessionid in skipactivity" + session_id);
                    session.createLoginSession(session_id);
                    userd=Long.parseLong(session_id);
                }


                if (session.checkLogin()) {


                    if(userd < 0)
                    {
                        System.out.println("It is minus"+userd);

                        prefs = getApplicationContext().getSharedPreferences("MyPrefSKIP", Context.MODE_PRIVATE);
                        boolean rb0 = prefs.getBoolean("skipstuff", false);
                        if(rb0 == true){
                            // Do something
                            System.out.println("SKIP IS TRUE");
                            Intent i = new Intent(getApplicationContext(), MainActivity.class);
                            userid = session.userID();
                            username=session.username();
                            userlastname=session.userlastname();
                            useradd1=session.useradd1();
                            useradd2=session.useradd2();
                            usercity=session.usercity();
                            userstate=session.userstate();
                            userzip=session.userpincode();
                            usercountry=session.usercountry();
                            userphone=session.userphone();
                            usermail=session.useremail();
                            usercounter=session.usercounter();


                            System.out.println("User ID in MAIN : " + userid+username+userlastname+useradd1+useradd2+usercity+userstate+userzip+usercountry);
                            i.putExtra("id", userid);
                            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(i);
                            finish();

                        }
                        else
                        {
                            System.out.println("SKIP IS FALSE");
                            //  String forskipid= String.valueOf(userd);
                            Intent menuLeft = new Intent(SplashActivity.this, SkipActivity.class);
                            //menuLeft.putExtra("id",session_id);
                            startActivity(menuLeft);
                        }
                    }
                    else
                    {
                        System.out.println("It is plus"+userd);
                        Intent i = new Intent(getApplicationContext(), MainActivity.class);
                        userid = session.userID();
                        username=session.username();
                        userlastname=session.userlastname();
                        useradd1=session.useradd1();
                        useradd2=session.useradd2();
                        usercity=session.usercity();
                        userstate=session.userstate();
                        userzip=session.userpincode();
                        usercountry=session.usercountry();
                        userphone=session.userphone();
                        usermail=session.useremail();
                        usercounter=session.usercounter();


                        System.out.println("User ID in MAIN : " + userid+username+userlastname+useradd1+useradd2+usercity+userstate+userzip+usercountry);
                        i.putExtra("id", userid);
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(i);
                        finish();
                    }


                } else {


                    System.out.println("THIS SHOULD NOT BE SHOW");

                }

                //GetNotification();
                AddDeviceToken();
                SplashActivity.this.finish();
            }
        }, SPLASH_TIME_OUT);

    }

MainActivity

 @Override
    public void onBackPressed() {


        if(getSupportFragmentManager().getBackStackEntryCount()>1){
            getSupportFragmentManager().popBackStack();
        }else
        if(getSupportFragmentManager().getBackStackEntryCount()==0){
            this.finish();
        }
    }


@Override
    protected void onResume() {
        super.onResume();
        viewtocart();
    }

    @Override
    protected void onStart() {
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
        mGoogleApiClient.connect();
        super.onStart();
    }

2 个答案:

答案 0 :(得分:2)

在你的SplashActivity中 当您要为mainActivity触发Intent时添加finish()。

在MainActivity中,实现onBackPresssed(),onDestroy()和onResume();

希望这会有所帮助。

答案 1 :(得分:0)

通常在onBackPress方法中,用户不应该覆盖它。它通常由android系统维护来完成活动。更改你的onBackPressed()方法并检查它是否对你有帮助。

@Override
public void onBackPressed() {

    if (getSupportFragmentManager().getBackStackEntryCount() > 0 &&
            getSupportFragmentManager().findFragmentById(R.id.your_container)!=null) {

        Fragment fragment= getSupportFragmentManager().findFragmentById(R.id.your_container);
        if(fragment.getClass().getSimpleName().equalsIgnoreCase(FragmentTest.class.getSimpleName())){
            getSupportFragmentManager().popBackStackImmediate();
        }

    }else {
        super.onBackPressed();
    }

}

修改

后退按钮,然后从最小化按钮

打开应用

问题出在这里。因为你先启动了活动启动,然后在转到主要时你正在清除标志并完成启动。所以后堆只包含一个活动。

当您按下主活动中的后退按钮时,应用程序将退出,而不是显示任何反向堆叠的活动。当您按下生命周期方法onPause()时,在主活动中,将调用onStop()和onDestroy()。

从最近再次打开应用程序时再次调用splash的原因是应用程序再次启动而splash是第一个活动。因此显示出来。

按住主页活动中的后退按钮会退出应用程序,但按主页按钮会最小化您的应用程序。最小化的应用程序会从您离开的位置打开应用程序,因为它将在内存中。

要详细了解活动生命周期,请查看此链接https://developer.android.com/guide/components/activities/activity-lifecycle.html