Ibr*_*med 7 java android android-manifest android-intent android-layout
假设我有活动A作为我的应用程序的根活动.并形成这项活动我去活动B.
我希望能够从B返回到A而不创建活动A的新实例.
此代码位于活动B中
public void onBackPressed() {
super.onBackPressed();
// Intent intent= new Intent(getBaseContext(), MainActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
Log.d("Back", "TEST");
}
Run Code Online (Sandbox Code Playgroud)
但它会在活动A上调用onCreate.我想要做的是在活动b开始时以及完成切换回活动A时在后台使用A.
这是显而易见的
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:screenOrientation="unspecified"
android:launchMode="singleTask"
android:stateNotNeeded="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".SubmenuActivty" >
</activity>
Run Code Online (Sandbox Code Playgroud)
Kai*_*dul 12
根据android活动生命周期,当你启动一个活动A:
生命周期方法清单:
Activity A.onResume();
Activity A.onStart();
Activity A.onCreate();
Run Code Online (Sandbox Code Playgroud)
活动状态:
Activity A : Resumed
Run Code Online (Sandbox Code Playgroud)
当您启动活动B时:
生命周期方法清单:
Activity A.onStop();
Activity B.onResume();
Activity B.onStart();
Activity B.onCreate();
Activity A.onPause();
...
...
...
Run Code Online (Sandbox Code Playgroud)
活动状态:
Activity A : Stopped
Activity B : Resumed
Run Code Online (Sandbox Code Playgroud)
当你再次启动A时:
生命周期方法清单:
Activity B.onDestroy();
Activity B.onStop();
Activity A.onResume();
....
....
....
Run Code Online (Sandbox Code Playgroud)
活动状态:
Activity B : Destroyed
Activity A : Resumed
Run Code Online (Sandbox Code Playgroud)
这是活动的生命周期:

你可以在这里找到详细信息
根据默认行为,活动A进入onStop()状态并且不活动,需要在返回活动A时创建新实例.我所知道的 - 没有办法保持A实例的存活.
小智 5
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)
试试吧...它使旧活动在没有新实例的情况下出现...
尝试这个
public void onBackPressed() {
super.onBackPressed();
Log.d("Back", "TEST");
}
Run Code Online (Sandbox Code Playgroud)
这就是您所需要的全部。
| 归档时间: |
|
| 查看次数: |
10764 次 |
| 最近记录: |