setAction()在intent(Service)中做了什么
我真的没有得到 setAction()所做的事情,我主要在" 服务活动数据传递"例。字符串可以自由设置吗?它到底做了什么?
创建广播意图时,必须包含一个ACTION STRING 除了可选数据和类别字符串。和。一样 标准意图,数据被添加到 使用键值对和putExtra()方法的广播意图 意图对象。可以通过调用addCategory()方法将可选类别字符串分配给广播意图。
标识广播事件的操作字符串必须是 unique,通常使用应用程序的Java包名称语法。 例如,以下代码片段创建并发送广播 意图包括唯一的操作字符串和数据:
Intent intent = new Intent();
intent.setAction("com.example.Broadcast");
intent.putExtra("HighScore", 1000); sendBroadcast(intent);
我见过的另一个变体是:
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);
这看起来更像是识别传入的数据类型。
是否要识别事件,传入数据类型,操作或每个 Intent 创建?可以免费吗?
答案 0 :(得分: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>
但是当你想要一个BroadCastReceiver以编程方式注册和取消注册时,可以使用setAction()。
Intent intent = new Intent();
intent.setAction("com.example.SendBroadcast");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);
有关详情,请查看:http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers