我有3项活动
活动有一个按钮。点击那个按钮就会发生扫描(一个连续的访问),一段时间后它会回复一个onreceive方法。
开始接收回叫B活动。 B是singleTask实例。它显示了一个列表。
点击B中列表中的任何项目,然后C活动开始。{startactivity(Cintent)}
同时,当A再次回调时,由于连续扫描结果,它启动B活动,但由于B是单任务,因此不创建新实例并且它平滑地显示更新列表。 / p>
问题是,当用户在页面C中,并且A获得回调时,它触发B启动Activty并且B看到当前活动正在运行(检查活动管理器)为C,触发C,但是这次再次创建C (新实例发布)尽管C也是Singletask。
我不希望再次创建C,我想使用相同的旧实例。
A(主启动器) - > B(SingleTask) - > C(SingleTask)
**
**
public class MainActivity extends Activity implements OnClickListener {
private Button connectButton;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectButton = (Button) findViewById(R.id.btn_Connect);
connectButton.setOnClickListener(this);
connectButton.setEnabled(true);
}
public void onClick(final View v) {
final Intent B = new Intent(context,B.class);
// start a specific job and wait for the callback
}
// on receiving the call back result start activity of B
@Override
public void onReceive(final Context c, final Intent intent) {
startActivity(B);
}
}
现在B活动会在开始时显示一个列表,当点击列表中的任何项目时,它会导航到C.
public class B extends Activity {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.B_list);
final Context context = this;
// Create Intent for C
intentCList = new Intent(context,
C.class);
}
@SuppressWarnings("unchecked")
private void putintoListVIew(Intent intent) {
BList.setOnItemClickListener(new OnItemClickListener() {
startactivity(intentCList);
}
}
的AndroidManifest.xml
<activity
android:name="com.broadcom.wiced.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.broadcom.wiced.RouterListActivity"
android:label="@string/app_name"
android:launchMode="singleTask">
</activity>
<activity
android:name="com.broadcom.wiced.WicedListActivity"
android:label="@string/app_name"
android:launchMode="singleTask">
</activity>
答案 0 :(得分:0)
您可以添加一个活动布尔标志isActive并将其设为true onResume和false onPause。 当活动A获得回调时,您可以检查它是否处于活动状态并决定是否需要运行B.
答案 1 :(得分:0)
将您的活动B和活动C设为singleTop。这种方式即使它们已经启动,相同的实例也将被放在首位。