【问题标题】:How to avoid that splash screen launch again while pressing back button from home screen in android [duplicate]如何在android中按下主屏幕上的后退按钮时避免再次启动启动画面[重复]
【发布时间】:2018-07-08 23:41:24
【问题描述】:

当从主屏幕按下返回按钮时,应用程序进入后台,当从后台解除应用程序时,应用程序从启动屏幕启动。但我想从主屏幕启动应用程序。

public class SplashActivity extends AppCompatActivity {

    private  static  final long SPLASH_DURATION = 3000L;
    private Handler mHandler;
    private Runnable mRunnable;

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

        mHandler =  new Handler();
        mRunnable = new Runnable() {
            @Override
            public void run() {
                dismissSplash();
            }
        };

        View rootView = findViewById(android.R.id.content);
        rootView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismissSplash();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        mHandler.postDelayed(mRunnable, SPLASH_DURATION);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mHandler.removeCallbacks(mRunnable);
    }

    private void dismissSplash(){
        startActivity(new Intent(this, MainActivity.class));
        finish();
    }
}

【问题讨论】:

  • 在调用意图时在启动活动中使用finish()
  • startActivity(new Intent(ScreenSplash.this, MainActivity.class)); finish();
  • 是的,我正在使用finish()。
  • 然后向我们展示您的代码,如果您使用的是finish()

标签: android


【解决方案1】:

当从 splash 开始活动时,请添加如下标记

Intent intent = new Intent(context, activity);     
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);   
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);     
context.startActivity(intent);

【讨论】:

    【解决方案2】:

    在调用 home Activity 之前调用 finish() 方法。

                finish();
                startActivity(new Intent(getApplicationContext(), yourActivity.class));
    

    如果不起作用,请在您的家庭活动中处理onBackPressed

    @Override
    public void onBackPressed() {
        moveTaskToBack(true); //it goes to background.
    }
    

    【讨论】:

    • 它不工作
    • 检查我的更新答案
    • 谢谢卡格里。第二个选项正在工作
    • 很高兴为您提供帮助。
    【解决方案3】:

    请使用SplashActivity.this 而不是this,因为您是从另一个线程调用dismissSplash。

       private void dismissSplash()
       {
          startActivity(new Intent(SplashActivity.this, MainActivity.class));
          SplashActivity.this.finish();
       }
    

    【讨论】:

    • 它不工作
    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多