我正在尝试在通话开始时重新启动应用程序。我正在监听电话状态变化,当我摘机状态时,我尝试重新启动我的应用程序。
这是我正在使用的启动活动代码:
Intent i = new Intent(context, MyClass.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
我使用“singleTop”启动模式不会重新创建活动。问题是活动重新启动,但它不在前面。也许有人对此有解决方案?谢谢。
我正在尝试在通话开始时重新启动应用程序。我正在监听电话状态变化,当我摘机状态时,我尝试重新启动我的应用程序。
这是我正在使用的启动活动代码:
Intent i = new Intent(context, MyClass.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
我使用“singleTop”启动模式不会重新创建活动。问题是活动重新启动,但它不在前面。也许有人对此有解决方案?谢谢。
您是否尝试过在清单中将 Activity 设置为 singleInstance?
<activity
android:name=".Main"
android:label="@string/app_name"
android:launchMode="singleInstance">
这将打开相同的活动(因为它只能有一个实例)。这对我有用,但确实意味着一些缺点。前任。您不能将活动用于不同的任务。
无法保证您的应用程序仍在运行并且无需创建即可启动;出于这个原因,你不需要依赖任何标志来继续你离开的地方。相反,当您的应用程序被隐藏时存储您的状态并在您的应用程序恢复时恢复它是由您负责的。基于 Android Activity 生命周期,有多种方法可以做到这一点(见http://developer.android.com/reference/android/app/Activity.html)。我会通过在方法中保存我的状态并在onPause()
方法中恢复它来做到这一点onResume()
。
试试下面:
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
finish();
startActivity(intent);