如何阻止我的应用程序由于不活动而在另一个应用程序上弹出



我一直在尝试在我的应用程序中检测用户不活动状态,并且确实在 stackoverflow 上找到了一段代码,它做得非常好,但问题是,当我在另一个应用程序中时,让我们说 Whatsapp 一旦计时器在我的应用程序中启动,我的应用程序就会在屏幕上弹出,我不希望这样,我不希望我的应用程序每次计时器因不活动而倒计时时弹出。

普拉迪普·古普塔的原始代码

拜托,我将如何做到这一点??

这是我的代码

public abstract class BaseActivity extends AppCompatActivity {
    Handler handler;
    Runnable r;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        handler = new Handler();
        r = new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                Toast.makeText(BaseActivity.this, "user is inactive from last 5 minutes",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(BaseActivity.this,
                        VendorHub.class);
                startActivity(intent);
                finish();
            }
        };
        startHandler();
    }
    @Override
    public void onUserInteraction() {
        // TODO Auto-generated method stub
        super.onUserInteraction();
        stopHandler();//stop first and then start
        startHandler();
    }
    public void stopHandler() {
        handler.removeCallbacks(r);
    }
    public void startHandler() {
        handler.postDelayed(r, 1*60*1000); //for 5 minutes
    }

}

onCreate()方法中删除startHandler();并添加这两个方法。

@Override
protected void onPause() {
    super.onPause();
    stopHandler();
}
@Override
protected void onResume() {
    super.onResume();
    startHandler();
}

您的代码的作用是设置执行一段代码的 5 分钟延迟。每次活动检测到触摸或按键时,它都会重新启动该延迟。

因此,如果用户在您自己的应用程序中闲置 5 分钟,这将非常有效,因为它将启动 VendorHub 活动。

但是,当用户离开您的应用程序时,您从未停止该处理程序,这会导致您的 VendorHub 活动在 5 分钟后仍会启动。

只需在onPause()中停止处理程序,然后在onResume()中再次启动处理程序。

此外,由于onResume()发生在onCreate()之后,这也意味着没有必要在onCreate()中调用startHandler(),因为它将在onResume()之后立即调用。

相关内容