[英]how to make callback in activities
我有3個活動
活動有一個按鈕。 單擊該按鈕時,將進行掃描(連續操作),一段時間后,它將對onreceive方法進行回調。
開始接收回叫B活動。 B是singleTask實例。 它顯示一個列表。
單擊B中列表中的任何項目后,接下來C活動開始。{startactivity(Cintent)}
同時,由於掃描的連續結果,再次回叫A時,它開始B活動,但是由於B是單個任務,因此不會創建新實例,並且平滑地顯示了更新的列表。
問題是,當用戶位於C頁中,並且A獲得回調時,A觸發B啟動Activty,B看到當前正在運行的活動(檢查Activity Manager)為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 Activity在啟動時顯示一個列表,當單擊列表中的任何項目時,它導航到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>
您可以添加一個活動布爾標志isActive,並將其設置為true onResume和false onPause。 當活動A獲取回調時,您可以檢查它是否處於活動狀態,並確定是否需要運行B。
使您的活動B和活動C為singleTop。 這樣,即使它們已經啟動,相同的實例也將放在頂部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.