• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺(jué)的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過(guò)程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛(ài)傳出去,很困難,也無(wú)法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>

            Activity的四種啟動(dòng)模式是相當(dāng)重要的知識(shí)點(diǎn),給activity設(shè)置合適的啟動(dòng)模式有利于程序的運(yùn)行。

            四種啟動(dòng)模式中,singleTask,singleInstance最為重要。

            Activity A設(shè)置為singleTask,能夠保證Activity A在棧中只有一個(gè)實(shí)例,這個(gè)棧也允許存在其他的實(shí)例,無(wú)論是Activity A是在棧頂還是棧底,當(dāng)有新的intent請(qǐng)求Activity A時(shí),都不會(huì)創(chuàng)建新的實(shí)例,而是直接交給Activity A的實(shí)例來(lái)處理。

            和這個(gè)模式相關(guān)的方法有onNewIntent,用來(lái)處理新的intent請(qǐng)求,特別需要注意的是使用startActivityForResult方法的時(shí)候,根據(jù)startActivityForResult的api說(shuō)明

             

            1. if the activity you are launching uses the singleTask launch mode, it will not run in your task and ts you will immediately receive cancel result.   

            對(duì)于這句話不是很理解,不知道“if the activity you are launching”指的是被啟動(dòng)的Activity還是啟動(dòng)的activity,寫個(gè)例子驗(yàn)證一下:

            1. public class HomeActivity extends Activity  
            2.     @Override  
            3.     public void onCreate(Bundle savedInstanceState)  
            4.         super.onCreate(savedInstanceState);  
            5.         Button btn new Button(this);  
            6.         btn.setText("start camera");  
            7.         LayoutParams params new LayoutParams(20060);  
            8.         params.gravity Gravity.CENTER;  
            9.         btn.setOnClickListener(new View.OnClickListener()  
            10.             @Override  
            11.             public void onClick(View v)  
            12.                 Intent intent new Intent();  
            13.                 intent.setClassName(HomeActivity.thisSecondActivity.class  
            14.                         .getName());  
            15.                 startActivityForResult(intent, Activity.DEFAULT_KEYS_DIALER);  
            16.              
            17.         });  
            18.         setContentView(btn, params);  
            19.      
            20.     @Override  
            21.     protected void onActivityResult(int requestCode, int resultCode, Intent data)  
            22.         Log.i("test""onActivityResult is working " resultCode);  
            23.         if (resultCode == Activity.RESULT_OK)  
            24.             switch (requestCode)  
            25.             case Activity.DEFAULT_KEYS_DIALER:  
            26.                 Intent intent new Intent(thisThirdActivity.class);  
            27.                 startActivityForResult(intent, Activity.DEFAULT_KEYS_DIALER 1);  
            28.                 break 
            29.             case Activity.DEFAULT_KEYS_DIALER 1 
            30.                 break 
            31.             default 
            32.                 break 
            33.              
            34.          
            35.      
            36.     @Override  
            37.     protected void onNewIntent(Intent intent)  
            38.         super.onNewIntent(intent);  
            39.         Log.i("test""onNewIntent is working");  
            40.      
            41.  
             
            1. public class SecondActivity extends Activity  
            2.     @Override  
            3.     protected void onCreate(Bundle savedInstanceState)  
            4.         super.onCreate(savedInstanceState);  
            5.         EditText edt new EditText(this);  
            6.         edt.setText("please input key words");  
            7.         LayoutParams params new LayoutParams(200, 60);  
            8.         params.gravity Gravity.CENTER;  
            9.         Button btn new Button(this);  
            10.         btn.setText("end Second");  
            11.         params.gravity Gravity.CENTER;  
            12.         btn.setOnClickListener(new View.OnClickListener()  
            13.             @Override  
            14.             public void onClick(View v)  
            15.                 setResult(Activity.RESULT_OK);  
            16.                 finish();  
            17.              
            18.         });  
            19.         LinearLayout ll new LinearLayout(this);  
            20.         ll.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT));  
            21.         ll.setOrientation(LinearLayout.VERTICAL);  
            22.         ll.addView(edt);  
            23.         ll.addView(btn);  
            24.         setContentView(ll);  
            25.               
            26.      
            27.  
             

             

            1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
            2.     package="com.mx.activity" android:versionCode="1" android:versionName="1.0" 
            3.     <uses-sdk android:minSdkVersion="4" />  
            4.     <application android:icon="@drawable/icon" android:label="@string/app_name"  
            5.         android:debuggable="true" 
            6.         <activity android:name=".HomeActivity" android:label="@string/app_name" 
            7.             <intent-filter>  
            8.                 <action android:name="android.intent.action.MAIN" />  
            9.                 <category android:name="android.intent.category.LAUNCHER" />  
            10.             </intent-filter>  
            11.         </activity>  
            12.         <activity android:name=".SecondActivity" android:launchMode="singleTask" />  
            13.         <activity android:name=".ThirdActivity" />  
            14.         <activity android:name="com.mx.activity.camera.CropImage" />  
            15.     </application>  
            16.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
            17. </manifest>  
             

             

            經(jīng)驗(yàn)證:打印結(jié)果是I/test    (17207): onActivityResult is working 0

            0既是RESULT_CANCELED,也就是說(shuō)直接取消了,onActivityResult收到RESULT_CANCELED在SecondActiviy,

             

             

            啟動(dòng)之前,這也就說(shuō)明了“if the activity you are launching”指的是被啟動(dòng)的activity。

             

             

            再來(lái)介紹singleInstance,他和singleTask類似,不同點(diǎn)是singleInstance要求activity的實(shí)例不僅只有一個(gè), 并且整個(gè)task中只有一個(gè)activity實(shí)例,而singleTask所在的棧中允許存在其他activity的實(shí)例。

            由此我們可以知道設(shè)置了singleInstance的activity也具有上面的特性,此外,啟動(dòng)的activity設(shè)置了 singleInstance,那么無(wú)論被啟動(dòng)的activity有沒(méi)有設(shè)置singleInstance,都無(wú)法獲取返回值,可以驗(yàn)證一下,將 HomeActivity的android:launchMode="singleInstance"

             

             

            到此,今天遇到的兩個(gè)問(wèn)題都明白了

            第一個(gè)問(wèn)題:為什么調(diào)用系統(tǒng)的相機(jī)程序拍照,相機(jī)程序還沒(méi)有啟動(dòng),onActivityResult收到RESULT_CANCELED,這是因?yàn)锳ccountActivity設(shè)置了singleInstance。

            第二個(gè)問(wèn)題:取消了AccountActivity設(shè)置了singleInstance的屬性,“拍照”---》“確定”,但是卻無(wú)法返回 AccountActivity,這是因?yàn)閷D片存儲(chǔ)在“/data/data/com.mx.browser/files/account.png”, 而files目錄對(duì)于文件的大小有限制

            posted on 2012-03-17 23:58 小果子 閱讀(2846) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Android & Ios
            国产精品久久国产精麻豆99网站| 久久夜色精品国产亚洲| 大美女久久久久久j久久| 久久久久无码精品国产| 伊人久久国产免费观看视频| 品成人欧美大片久久国产欧美| 国内精品伊人久久久久| 久久精品人成免费| 国产精品久久久亚洲| 久久久久人妻一区二区三区vr| 久久人人爽人人爽人人爽| 久久无码一区二区三区少妇| 久久影视国产亚洲| 久久久久无码国产精品不卡| 久久人人爽人人澡人人高潮AV| 久久九九久精品国产| 久久精品国产亚洲av瑜伽| 久久综合日本熟妇| 伊人久久大香线蕉av不变影院| 97久久久久人妻精品专区| 亚洲国产天堂久久综合网站| 久久精品免费一区二区| 99久久99久久精品国产片果冻| 国产偷久久久精品专区| 国产亚洲欧美精品久久久| 精品久久久久久国产91| 久久精品视屏| 亚洲精品美女久久777777| 久久精品aⅴ无码中文字字幕不卡| 99久久综合狠狠综合久久止| 青青青伊人色综合久久| 久久综合久久鬼色| 成人午夜精品无码区久久| 9久久9久久精品| 久久综合色之久久综合| 久久亚洲精品无码AV红樱桃| 久久这里只有精品首页| 日韩精品久久久久久久电影| 久久AV高清无码| 三级片免费观看久久| 麻豆一区二区99久久久久|