活动A启动没有标志的活动B. 堆栈现在是AB,B在上面。B使用FLAG_ACTIVITY_REORDER_TO_FRONT(唯一标志)开始活动A. 我期望堆栈现在成为BA。但是,此时按下后退按钮后,它将返回到主屏幕。在这里,我希望将活动B带到最前面。再次单击启动器图标时,应用程序将以B作为运行活动并在堆栈中打开任何内容。
Launchmode是清单中的标准(默认)。
这是预期的行为,我只是没有正确理解它?
我创建了一个没有混淆因素的测试项目,仍然看到相同的行为。我只是不理解它,它似乎不是每个文档。
这种行为似乎是在框架中的一个BUG,请参阅我的评论下面的答案。我需要一个解决方法。
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClickBtn(View view)
{
Intent flowIntent = new Intent(this, SecondActivity.class);
startActivity(flowIntent);
}
}
public class SecondActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClickBtn(View view)
{
Intent flowIntent = new Intent(this, MainActivity.class);
flowIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(flowIntent);
}
}
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
;
package="com.example.tester"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tester.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.tester.SecondActivity" />
</application>
</manifest>
发布于 2018-05-08 17:14:14
发布于 2018-05-08 17:54:33
当你REORDER
到你的Activity
(the Launcher
Activity
)时会发生什么,Intent被设置为使得后退将使你回到你的主页Launcher
。
作为一个实验,尝试添加Activity
C并尝试从REORDER
B到C 的前面。即:
A-> B-> C ... A-> C-> B
如果顺序对您非常重要,可能需要重写Activity.onNewIntent()方法。
@Override
protected void onNewIntent(Intent intent) {
}
https://stackoverflow.com/questions/-100008414
复制相似问题