在应用程序的任何活动中调用onPause()时通知

时间:2018-04-09 10:09:33

标签: android activity-lifecycle

我认为这个问题可能很简单,但我没有找到任何解决办法,

我在Android中有任何方式,如果任何一个活动调用onPause(),我需要显示Toast消息或任何需要显示的通知。一般情况下,我希望在活动调用onPause()时收到通知,但我需要在一个地方,因为我可能有15个活动,我不想在所有活动中添加它。

例如:如果我在任何一个活动调用onPause时有活动,我需要收到通知,但通知代码应该在一个地方,我们不应添加任何代码行onPause()是它可以做到这一点。

感谢。

3 个答案:

答案 0 :(得分:1)

创建一个baseActivity,例如:

open class BaseActivity : AppCompatActivity() {

    override fun onPause() {
        super.onPause()
        Toast.makeText(this, "notified", Toast.LENGTH_SHORT).show()
    }
}

然后,您可以在活动中扩展它并处理BaseActivity中的on pause调用

答案 1 :(得分:0)

如果您的minSdkVersion> = 14,则可以使用Application.ActivityLifecycleCallbacksActivityLifecycleCallbacks

你必须定义一个自定义Application类,然后你可以注册这个回调:

public class MyApplication extends Application {

  private class LifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
    @Override
    public void onActivityCreated(final Activity activity, final Bundle savedInstanceState) {
        //nothing to do
    }

    @Override
    public void onActivityDestroyed(final Activity activity) {
        //nothing to do
    }

    @Override
    public void onActivityPaused(final Activity activity) {
        // TODO Do your stuff, e.g. show toast.
    }

    @Override
    public void onActivityResumed(final Activity activity) {
        //nothing to do
    }

    @Override
    public void onActivitySaveInstanceState(final Activity activity, final Bundle outState) {
        //nothing to do
    }

    @Override
    public void onActivityStarted(final Activity activity) {

    }

    @Override
    public void onActivityStopped(final Activity activity) {

    }
  }

  private final LifecycleCallbacks callbacks;

  public void onCreate() { 
    super.onCreate();
    callbacks = new LifecycleCallbacks();
    application.registerActivityLifecycleCallbacks(callbacks);
  }
}

答案 2 :(得分:0)

创建一个BaseActivity,其中包含您要在所有其他活动中使用的所有方法。

然后使用BaseActivity扩展每个活动以调用onPause()方法。