具体来说,在Activities方面应该遵循什么样的约定?如果我正在构建一个具有许多屏幕的程序,我是否为每个屏幕创建一个Activity ?
如果我想在活动之间正确导航,我是否在每个活动中都粘贴意图?我想让这段代码尽可能干净高效
总之:是的。
虽然你可以通过在单个Activity中动态改变UI来解决这个问题,但android建议每个应用程序的Activity都应该在一个单独的Activity类中编码。
看这篇关于android推荐方法的相当好的文章。
这个Intent/Activity设计模式有很多优点,其中之一就是你可以重写并且用你自己的匹配意图过滤器扩展其他应用活动。
我知道你很关心效率。请放心,Activity切换开销在android中是高度优化的(例如,一个Dalvik实例总是预先分配的,准备好处理一个新的Activity而没有上下文切换开销)。简短的回答:这真的取决于你想如何布局你的应用程序。
例如,如果你想有选项卡,你可以使用一个tabhost,它可以很容易地为你在activity之间切换。
如果你想自己启动activity,你可以启动带有intent的activity(正如你在问题中提到的)。一个例子是从Button或ListView启动intent。对于ListView(带有OnItemClickListener),您可能会有这样的内容:
(your ListView).setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View v, int index,
long arg3) {
Intent intent = new Intent(TheActivityYou'reLaunchingFrom.this, OtherActivityYouWishToLaunch.class);
startActivity(intent);
}
}
我提供的链接都有很好的例子。当你想结束你从另一个活动启动的活动时,你可以调用finish(),它应该从另一个事件(比如点击一个按钮)调用。
还请记住,您可以启动activity,希望通过startActivityForResult从已启动的activity接收数据,该方法使用Bundles。