簡體   English   中英

接收者活動后返回上一屏幕

[英]Returning to previous screen after receiver activity

我有一個應用程序,該應用程序的活動可以從“開始”菜單啟動,而活動可以由廣播接收器啟動。

在此處輸入圖片說明

現在啟動時,如果調用了接收器,則將啟動“事件查看器”活動...退出該活動后,用戶將返回到先前的屏幕(可以是主屏幕或任何用戶正在執行的操作)..這應該是這樣的。

但是,如果我從主啟動器啟動“主”活動,然后按主屏幕按鈕返回主屏幕。問題開始了。 現在,如果將接收方稱為“事件查看器”,則會顯示活動。 如果用戶退出“事件查看器”活動(或我稱為finish()),它將顯示“主要”活動(仍在后台運行),而不是用戶之前所做的事情(如主屏幕)。

這不是我想要的..因為它導致用戶在取消日歷事件(我的應用程序的目的)后返回到主應用程序的設置。

如果我在onpause中調用finish(),它可以正常工作...但是那不是它應該工作的方式。

有什么線索嗎?

希望問題清楚,因為英語不是我的母語,所以我很難解釋這個問題:-)

謝謝..

在您的接收器中,使用標志FLAG_ACTIVITY_NEW_TASK

@Override
public void onReceive(Context context, Intent intent) {
    //... bla bla bla

    Intent in = new Intent(context, IndependentActivity.class);
    in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(in);

    //... bla bla bla
}

在清單中,為您的IndependentActivity提供一個taskAffinity。

    <activity
        android:name=".IndependentActivity"
        android:excludeFromRecents="true"
        android:taskAffinity="com.example.independantactivty.ind" >
    </activity>

我已將其從“最近事件”中排除,但這完全是可選的。

在我看來,除非用戶選擇運行該應用程序(小工具按,通知選擇,啟動器等),否則啟動活動通常是不明智的。 您的示例只是為什么當用戶不期望突然更改活動可能導致問題時的原因之一。

如果用戶不使用該應用程序,則引起注意的最佳方法是通過狀態欄通知系統。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1000) {
        if (resultCode == 1) {
            Main.this.finish();
        }

    }}

在您的主要活動和其他活動中,放置this.setResult(1); 在調用yourOtherActivity.this.finish()之前

我想就是那樣。 你的母語是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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