簡體   English   中英

重新啟動應用程序時獲取意圖

[英]Getting Intent when App re-launch

假設一個應用程序中只有2個活動:
1. 活動A (發起人活動)
2. 活動B


onCreate()中的 Acrivity代碼:

Intent intent = new Intent();
    intent.putExtra("key", "test");
    intent.setClass(this, ActivityB.class);
    startActivity(intent);
    finish();  

因此,通過傳遞數據從活動A啟動活動B。 活動A也被銷毀。


因此,如果我是第一次啟動該應用程序:
1. 活動A開始
2. 活動A使用數據啟動活動B
3. 活動A被破壞

假設如果我按活動B的返回鍵, 活動B被破壞,應用程序退出,並且如果我重新啟動該應用程序:
1.活動B直接開始,獲取與活動A相同的數據。


我的問題是:
重新啟動應用程序后,如何停止這種意圖?
重新啟動后啟動活動B ,這不是問題,我只是想停止獲取意圖。


AndriodManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.listnertest"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="ActivityA"
        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="ActivityB"
        android:label="@string/app_name" >
    </activity>
</application>

每次啟動該應用程序時,它將運行ActivityA。 並且由於您要告訴ActivityA每當創建數據時就將其發送到ActivityB,因此每次都會這樣做。

聽起來像是第二次,您仍然要啟動ActivityB,但不是將您意圖中放入的數據與啟動有關,對嗎? 無論您是否已發送數據,都需要跟蹤應用程序的啟動。 一種方便的方法是SharedPreferences。

Intent intent = new Intent();
SharedPreferences prefs = activity.getSharedPreferences("my_prefs", 0);
if (!prefs.contains("sent_key")) {
    intent.putExtra("key", "test");
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("sent_key", true);
    editor.commit();
}
intent.setClass(this, ActivityB.class);
startActivity(intent);
finish();  

這將使ActivityA始終啟動ActivityB,但只會在第一次發送數據。

暫無
暫無

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

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