• <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 - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

            Activity的四種啟動模式是相當重要的知識點,給activity設置合適的啟動模式有利于程序的運行。

            四種啟動模式中,singleTask,singleInstance最為重要。

            Activity A設置為singleTask,能夠保證Activity A在棧中只有一個實例,這個棧也允許存在其他的實例,無論是Activity A是在棧頂還是棧底,當有新的intent請求Activity A時,都不會創(chuàng)建新的實例,而是直接交給Activity A的實例來處理。

            和這個模式相關(guān)的方法有onNewIntent,用來處理新的intent請求,特別需要注意的是使用startActivityForResult方法的時候,根據(jù)startActivityForResult的api說明

             

            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.   

            對于這句話不是很理解,不知道“if the activity you are launching”指的是被啟動的Activity還是啟動的activity,寫個例子驗證一下:

            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)驗證:打印結(jié)果是I/test    (17207): onActivityResult is working 0

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

             

             

            啟動之前,這也就說明了“if the activity you are launching”指的是被啟動的activity。

             

             

            再來介紹singleInstance,他和singleTask類似,不同點是singleInstance要求activity的實例不僅只有一個, 并且整個task中只有一個activity實例,而singleTask所在的棧中允許存在其他activity的實例。

            由此我們可以知道設置了singleInstance的activity也具有上面的特性,此外,啟動的activity設置了 singleInstance,那么無論被啟動的activity有沒有設置singleInstance,都無法獲取返回值,可以驗證一下,將 HomeActivity的android:launchMode="singleInstance"

             

             

            到此,今天遇到的兩個問題都明白了

            第一個問題:為什么調(diào)用系統(tǒng)的相機程序拍照,相機程序還沒有啟動,onActivityResult收到RESULT_CANCELED,這是因為AccountActivity設置了singleInstance。

            第二個問題:取消了AccountActivity設置了singleInstance的屬性,“拍照”---》“確定”,但是卻無法返回 AccountActivity,這是因為將圖片存儲在“/data/data/com.mx.browser/files/account.png”, 而files目錄對于文件的大小有限制

            posted on 2012-03-17 23:58 小果子 閱讀(2846) 評論(0)  編輯 收藏 引用 所屬分類: Android & Ios
            欧美熟妇另类久久久久久不卡 | 久久精品国产亚洲av麻豆色欲| 亚洲欧洲日产国码无码久久99| 无码久久精品国产亚洲Av影片| 久久精品人人槡人妻人人玩AV| 久久亚洲国产欧洲精品一| 久久精品三级视频| 亚洲中文字幕久久精品无码APP | 久久综合给合久久狠狠狠97色| 久久久久久狠狠丁香| 亚洲七七久久精品中文国产| 久久免费的精品国产V∧| 久久国产免费| 日韩精品久久无码人妻中文字幕| 色综合合久久天天综合绕视看| 久久人人爽人人精品视频| 日韩乱码人妻无码中文字幕久久| 狠狠色丁香婷婷综合久久来 | 久久亚洲sm情趣捆绑调教| 久久精品国产99国产精品澳门| 亚洲一区精品伊人久久伊人| 国产韩国精品一区二区三区久久| 久久精品免费大片国产大片| 日本久久久久亚洲中字幕| 久久毛片免费看一区二区三区| 久久婷婷五月综合国产尤物app| 久久久不卡国产精品一区二区| 三上悠亚久久精品| 思思久久好好热精品国产| 成人妇女免费播放久久久| 精品久久久久久久国产潘金莲| 国产精品久久久久久| 久久亚洲AV无码精品色午夜麻豆| 精品久久久无码中文字幕天天| 久久久久久久久无码精品亚洲日韩| 亚洲国产婷婷香蕉久久久久久| 久久―日本道色综合久久| 久久久一本精品99久久精品66| 精品国产日韩久久亚洲| 欧美午夜精品久久久久久浪潮| 91精品免费久久久久久久久|