Activity的一些使用

1.啟動(dòng)一個(gè)activity并從它中拿到回執(zhí)的值

通過startActivityForResult啟動(dòng)activity绞蹦,從onActivityResult拿到返回值

代碼示例

public class FirstActivity extends AppCompatActivity {
    private static final int REQUESTCODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        findViewById(R.id.startIntent).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                startActivityForResult(intent, REQUESTCODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case REQUESTCODE:
                if (resultCode == RESULT_OK) {
                    String returnData = data.getStringExtra("RETURN_DATA");
                    Toast.makeText(this, "return data: " + returnData, Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;

        }
    }
}

通過setResult向上一個(gè)活動(dòng)返回?cái)?shù)據(jù)

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("RETURN_DATA", "返回?cái)?shù)據(jù)給第一頁(yè)");
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }
}

2.活動(dòng)被回收了的處理

代碼示例

public class FirstActivity extends AppCompatActivity {

    private String tempData = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        tempData = "內(nèi)存回收之前需要保存的測(cè)試數(shù)據(jù)";
        if (savedInstanceState != null) {
            tempData = savedInstanceState.getString("tempdata");
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("tempdata", tempData);
    }
}

3.啟動(dòng)模式

在清單文件中添加 android:launchMode

  • standard
  • singleTop
  • singleTask
  • singleInstance

standard

系統(tǒng)不在乎是否已經(jīng)在返回椗缰冢總存在泉蝌,每次啟動(dòng)都會(huì)重新創(chuàng)建一個(gè)實(shí)例

singleTop

啟動(dòng)活動(dòng)時(shí)屋剑,如果返回棧頂已經(jīng)是該活動(dòng)呛谜,則不在重新創(chuàng)建新的活動(dòng)风罩。如果不在棧頂岁忘,則仍然會(huì)再次創(chuàng)建該活動(dòng)。

singleTask

系統(tǒng)會(huì)在返回棧中檢查是否存在該活動(dòng)深员,如果存在负蠕,則直接使用它,并把這個(gè)活動(dòng)之上的其他活動(dòng)統(tǒng)統(tǒng)出棧倦畅。如不存在遮糖,則重新創(chuàng)建。

singleInstance

啟用一個(gè)新的返回棧來管理這個(gè)活動(dòng)叠赐。如果有上個(gè)活動(dòng)A(standard)->B(singleInstance)->C(standard)依次點(diǎn)擊跳轉(zhuǎn)完欲账,點(diǎn)擊back鍵回退時(shí),回退順序?yàn)镃->A->B芭概。因?yàn)锳C為同一個(gè)棧赛不,C出棧后自然會(huì)顯示A,A出棧后才會(huì)顯示另一個(gè)棧B谈山。

4.BaseActivity俄删,ActivityCollector管理啟動(dòng)的activity

代碼示例

public class ActivityCollector {
    private static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    /**
     * 退出程序
     */
    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }

    /**
     * 保證程序完全退出,殺掉進(jìn)程,只能用于殺掉當(dāng)前程序進(jìn)程
     */
    public static void killProcess (){
        android.os.Process.killProcess( android.os.Process.myPid());

    }
}
public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //打印當(dāng)前活動(dòng)的名稱
        Log.d("BaseActivity", "Current Activity Name:  " + getClass().getSimpleName());
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

5.啟動(dòng)activity較優(yōu)方式

代碼示例

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    public static void startSecondActivity(Context context, String param1, String param2) {
        Intent intent = new Intent(context, SecondActivity.class);
        intent.putExtra("param1", param1);
        intent.putExtra("param2", param2);
        context.startActivity(intent);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奏路,一起剝皮案震驚了整個(gè)濱河市畴椰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸽粉,老刑警劉巖斜脂,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異触机,居然都是意外死亡帚戳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門儡首,熙熙樓的掌柜王于貴愁眉苦臉地迎上來片任,“玉大人,你說我怎么就攤上這事蔬胯《怨” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)产场。 經(jīng)常有香客問我鹅髓,道長(zhǎng),這世上最難降的妖魔是什么京景? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任窿冯,我火速辦了婚禮,結(jié)果婚禮上确徙,老公的妹妹穿的比我還像新娘醒串。我一直安慰自己,他們只是感情好米愿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布厦凤。 她就那樣靜靜地躺著鼻吮,像睡著了一般育苟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椎木,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天违柏,我揣著相機(jī)與錄音,去河邊找鬼香椎。 笑死漱竖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畜伐。 我是一名探鬼主播馍惹,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼玛界!你這毒婦竟也來了万矾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤慎框,失蹤者是張志新(化名)和其女友劉穎良狈,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笨枯,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薪丁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馅精。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片严嗜。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洲敢,靈堂內(nèi)的尸體忽然破棺而出漫玄,到底是詐尸還是另有隱情,我是刑警寧澤沦疾,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布称近,位于F島的核電站第队,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刨秆。R本人自食惡果不足惜凳谦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衡未。 院中可真熱鬧尸执,春花似錦、人聲如沸缓醋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)送粱。三九已至褪贵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抗俄,已是汗流浹背脆丁。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留动雹,地道東北人槽卫。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胰蝠,于是被迫代替她去往敵國(guó)和親歼培。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,285評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程茸塞,因...
    小菜c閱讀 6,444評(píng)論 0 17
  • 【Android Activity】 什么是 Activity? 四大組件之一,通常一個(gè)用戶交互界面對(duì)應(yīng)一個(gè) ac...
    Rtia閱讀 3,817評(píng)論 3 18
  • 今天一天過得非扯阕混亂,沒有按計(jì)劃來翔横!跑去剪頭不說读跷,日計(jì)劃完全是忽略不計(jì)的!老師說過禾唁,我從來就是個(gè)不約束自己...
    徐麗紅閱讀 155評(píng)論 0 0
  • 你有多長(zhǎng)時(shí)間沒有跟父母通電話了荡短,有多久沒有跟父母好好談?wù)勑牧恕?你是否有真正意識(shí)到父母是無法陪伴我們永久的丐枉,他們始...
    拾凡時(shí)光閱讀 340評(píng)論 5 1