setAction()为intent做什么(广播)

Pla*_*one 7 service android android-intent

setAction()在intent(Service)中做了什么

我真的没有得到setAction()的功能,我主要在" 服务到活动数据传递 "的例子中找到它.字符串可以自由设置吗?它究竟做了什么?

创建广播意图时,除了可选数据和类别字符串之外,它还必须包括ACTION STRING.与标准意图一样,使用键值对和意图对象的putExtra()方法将数据添加到广播意图中.可以通过调用addCategory()方法将可选类别字符串分配给广播意图.

标识广播事件的操作字符串必须是唯一的,并且通常使用应用程序的Java包名称语法.例如,以下代码片段创建并发送包含唯一操作字符串和数据的广播意图:

 Intent intent = new Intent();
intent.setAction("com.example.Broadcast");
intent.putExtra("HighScore", 1000); sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

我见过的另一个变种是:

 Intent broadcastIntent = new Intent();

            broadcastIntent.setAction("com.truiton.broadcast.string");
            broadcastIntent.putExtra("Data", "Broadcast Data");
            sendBroadcast(broadcastIntent);

            try {
               Thread.sleep(1000);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
            broadcastIntent.setAction("com.truiton.broadcast.integer");
            broadcastIntent.putExtra("Data", 10);
            sendBroadcast(broadcastIntent);

            try {
               Thread.sleep(1000);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
            broadcastIntent .setAction("com.truiton.broadcast.arraylist");
            broadcastIntent.putExtra("Data", mList);
            sendBroadcast(broadcastIntent);
Run Code Online (Sandbox Code Playgroud)

这看起来更像是识别传入的数据类型.

这是否意味着识别事件,传入数据类型,操作或每个Intent创建?它可以免费吗?

小智 5

使用<action>标记里面的<activity>标记来设置Manifest.xml文件中的操作与使用java文件中的intent.setAction以编程方式进行设置相同。

这些通常用于广播接收器。

以下是一个xml示例:

<receiver android:name="MyReceiver" >
            <intent-filter>
                <action android:name="com.example.SendBroadcast" >
                </action>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" >          
                </action>
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

但是,当您希望BroadCastReceiver以编程方式注册和注销时,可以使用setAction()。

Intent intent = new Intent();
          intent.setAction("com.example.SendBroadcast");
          intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
          sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请检查:http : //www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers