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