<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Intent的定義: Android中提供了Intent機制來協助應用間的交互與通訊,或者采用更準確的說法是,Intent不僅可用于應用程序之間,也可用于應用程序內部的activity, service和broadcast receiver之間的交互。Intent這個英語單詞的本意是“目的、意向、意圖”。 使用Intent啟動系統組件: 三種應用程序基本組件——activity, service和broadcast receiver——是使用稱為intent的消息來激活的。Intent消息傳遞是一種組件間運行時綁定的機制. intent是Intent對象, 它包含了需要做的操作的描述, 或者, 對于廣播來說, 包含了正在通知的消息內容. 對于向這三種組件發送intent有不同的機制: 使用Context.startActivity() 或 Activity.startActivityForResult(), 傳入一個intent來啟動一個activity. 使用 Activity.setResult(), 傳入一個intent來從activity中返回結果. 將intent對象傳給Context.startService()來啟動一個service或者傳消息給一個運行的service. 將intent對象傳給 Context.bindService()來綁定一個service. 將intent對象傳給 Context.sendBroadcast(), Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()等廣播方法,則它們被 傳給 broadcast receiver. 在上述三種情況下, android系統會自己找到合適的activity, service, 或者 broadcast receivers來響應intent. 三者的intent相互獨立互不干擾. Intent的屬性: component(組件):目的組件 action(動作):用來表現意圖的行動 category(類別):用來表現動作的類別 data(數據):表示與動作要操縱的數據 type(數據類型):對于data范例的描寫 extras(擴展信息):擴展信息 Flags(標志位):期望這個意圖的運行模式 **1,component(組件):目的組件** Component屬性明確指定Intent的目標組件的類名稱。(屬于直接Intent) ComponentName對象包含的構造器: ComponentName(String pkg,String cls)創建在pkg所在報下的cls類所對應的組件 ComponentName(Context pkg,String cls)創建在pkg所在報下的cls類所對應的組件 ComponentName(Context?pkg,Class cls)創建在pkg所在報下的cls類所對應的組件 一個ComponentName需要指定包名和類名--這就可以唯一確定一個組件類 另外Intent可以根據給定的組件類去啟動特定的組件,Intent有下面的方法: setClass(Context packageContext,Class cls):設置該Intent將要啟動的組件對應的類 setClassName(Context packageContext,String className):設置該Intent將要啟動的組件對應的類 setClassName(String packageContext,String className):設置該Intent將要啟動的組件對應的類 **以上方法中的兩個參數其實就確定了一個Component組件** Intent類型分為顯式Intent(直接類型)、隱式Intent(間接類型)。官方建議使用隱式Intent。上述屬性中,component屬性為直接類型,其他均為間接類型。 啟動第二個Activity時: ~~~ // 為bn按鈕綁定事件監聽器 bn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // 創建一個ComponentName對象 ComponentName comp = new ComponentName(ComponentAttr.this, SecondActivity.class); Intent intent = new Intent(); // 為Intent設置Component屬性 intent.setComponent(comp); // Intent intent = new Intent(ComponentAttr.this, // SecondActivity.class); startActivity(intent); } }); ~~~ 可以這樣寫: ~~~ Intent intent = new Intent(); //setClass函數的第一個參數是一個Context對象 //Context是一個類,Activity是Context類的子類,也就是說,所有的Activity對象,都可以向上轉型為Context對象 //setClass函數的第二個參數是一個Class對象,在當前場景下,應該傳入需要被啟動的Activity類的class對象 intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent); ~~~ 還可以這樣寫: ~~~ Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); ~~~ **2、Action(動作):用來表現意圖的行動** Action 是一個用戶定義的普通字符串,代表該Intent索要完成的一個抽象“動作”。用于描述一個 Android 應用程序組件,一個 Intent Filter 可以包含多個 Action。在 AndroidManifest.xml 的Activity 定義時,可以在其 節點指定一個 Action列表用于標識 Activity 所能接受的“動作” ? ? Action要完成的知識一個抽象的動作,這個動作具體由哪個組件(Activity,Service,BroadcastReceiver)來完成,Action這個字符不管。比如Android提供的標準Action:Intent.ACTION_VIEW,它值表示一個抽象的查看動作,但具體什么,啟動哪個Activity來看,Intent.ACTION_VIEW并不知道---這取決于Activity的配置,只要某個Activity的配置中包含了該ACTION_VIEW,該Activity就有可能被啟動。 一句話總就是說,哪個Activity的intent-filter...>配置中有Intent設置的Action屬性,就可能被啟動。 MainActivity .java ~~~ public class MainActivity extends Activity { public final static String ACTION="com.hust.actiontest"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setAction(MainActivity.ACTION); startActivity(intent); } }); } ~~~ ~~~ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hust.actionattrtest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="22" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" 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=".SeclondActivity" android:label="@string/title_activity_seclond" > <intent-filter> <!-- 指定該Activity能響應Action為指定字符串的Intent --> <action android:name="com.hust.actiontest" /> <!-- 指定該Action能響應Category屬性為指定字符串的Intent --> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest> ~~~ SecondActivity.java ~~~ public class SeclondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_seclond); TextView show = (TextView) findViewById(R.id.show); // 獲取該Activity對應的Intent的Action屬性 String action = getIntent().getAction(); // 顯示Action屬性 show.setText("Action為:" + action); } ~~~ 因為SeclondActivity的的action有com.hust.actiontest所以就可能被MainActivity啟動 使用Intent的Action屬性啟動組件的過程大概是:主Activity的Intent的Action屬性設置為一個字符串str比如“com.hust.edu”,然后再去Manifest.xml中查找各個Activity組件的的action是否有這個字符串str=com.hust.edu,如果有,這個Activity可能被啟動。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看