Java 电话通话结束后重新启动活动的正确方法

Java 电话通话结束后重新启动活动的正确方法,java,android,service,phone-state-listener,Java,Android,Service,Phone State Listener,这两种方法都可以工作,但我不确定哪种代码是最好的,这样每次API 17-25都可以工作。我的应用程序依赖于通话结束后打开的活动,这是我通过PhoneStateListener完成的 我已经看到了这两种方法的推荐,如果这是一个糟糕的问题,很抱歉 Intent restart = mContext.getPackageManager(). getLaunchIntentForPackage(mContext.getPackageName()); restart.add

这两种方法都可以工作,但我不确定哪种代码是最好的,这样每次API 17-25都可以工作。我的应用程序依赖于通话结束后打开的活动,这是我通过PhoneStateListener完成的

我已经看到了这两种方法的推荐,如果这是一个糟糕的问题,很抱歉

Intent restart = mContext.getPackageManager().
            getLaunchIntentForPackage(mContext.getPackageName());
    restart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    restart.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(restart);


您应该使用Activity类的recreate()方法来重新启动Activity,而不是这两个方法

您应该使用Activity类的recreate()方法来重新启动Activity,而不是这两个方法

好的,我如何从PhoneStateListener内部调用recreate()?它正在从服务运行。谢谢你可以用界面检查这个答案好的,我如何从我的PhoneStateListener内部调用recreate()?它正在从服务运行。谢谢你可以用界面检查这个答案
    Intent intent = new Intent(mContext, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    mContext.startActivity(intent);