0

当我在同一个 ADT 项目中有自定义服务和自定义活动时,我可以在服务中使用它来启动我的活动:

Intent i = new Intent(context, MyCustomActivity.class);
startActivity(i);

但是,当我在单独的项目中拥有服务和活动时,我不能这样做,因为我没有直接引用MyCustomActivity.class. 这是有问题的:我不希望仅仅为了修复损坏的引用而包含一个 JAR,因为我认为这会增加包大小并在设备上创建冗余数据(即活动代码在服务和活动包之间重复)。所以相反,我使用它(也许还有其他选择?):

Intent i = new Intent("com.mypackage.myStringActionName");
startActivity(i); //is this a broadcast?

或者

Intent i = new Intent("com.mypackage.myStringActionName");
sendBroadcast(i);

...但是当我只想将意图指向单个活动以告诉它开始时,我真的不喜欢发送广播。

那么,还有哪些其他方法可以避免重复(在 ADT 中)?或者是发送直接意图的更好方法?

4

1 回答 1

1

你可以试试这个:

Intent i = new Intent();
i.setComponent(new ComponentName(packageName, classname));
startActivity(i);

className 必须包含 packageName 和主要活动名称

于 2013-05-03T09:10:52.520 回答