簡體   English   中英

如何在活動中進行回調

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM