异步编程最佳实践

异步编程最佳实践,第1张

异步编程最佳实践
  • 使用全局变量

如果您不想用简单的

Intent.putExtra()
调用弄乱代码并为每个唯一的代码管理这些事情,则
Activity
必须在应用程序中使用全局变量。
Application
只要应用程序处于活动状态,就可以扩展和存储所需的数据。要真正实现它,请使用此出色的答案。这将使活动之间的依赖关系消失。例如,假设您在应用程序的生命周期内需要为该应用程序提供一个“用户名”-这是一个很好的工具。无需打脏
Intent.putExtra()
电话。

  • 使用样式

制作第一个Android应用程序时,一个常见的错误是通常只是开始编写XML视图。XML文件将(没有问题且非常快速)最多包含多行代码。在这里,您可以找到一个解决方案,只需使用该

style
属性即可实现特定的行为。例如,考虑这段代码:

values / styles.xml

<style name="TitleText">    <item name="android:layout_height">wrap_content</item>    <item name="android:layout_width">wrap_content</item>    <item name="android:textSize">18sp</item>    <item name="android:textColor">#000</item>    <item name="android:textStyle">bold</item>   </style>

layout / main.xml

现在,假设您有两个,

TextView
并且两个都应具有相同的行为,则使它们使用
TitleText
样式。样例代码:

<!--- ... --><TextView   android:id="@+id/textview_one"    /><TextView   android:id="@+id/textview_two"     /><!--- ... -->

很简单,您不需要重复代码。如果您真的想进一步研究这个特定主题,请参阅布局技巧:创建可重用的UI组件。

  • 使用字符串

这一点很简短,但我认为必须提及。开发人员可能会犯的另一个错误是跳过 strings.xml
,只在代码中(他需要的地方)编写UI消息(和属性名称)。使您的应用程序易于维护;只需在 strings.xml 文件中定义消息和属性。

  • 创建和使用全局工具类

当我编写第一个应用程序时,我只是在需要的地方编写(并重复了)方法。结果?许多在各种活动之间具有相同行为的方法。我学到的是制作工具类。例如,假设您必须在所有活动中发出Web请求。在这种情况下,请跳过在实际中定义它们的步骤,

Activity
并为其创建一个静态方法。样例代码:

public final class Tools {    private Tools() {    }    public static final void sendData(String url,    String user, String pass) {        // URLConnections, HttpClients, etc...    }}

现在,您只需在

Activity
需要向服务器发送数据的代码中使用以下代码即可:

Tools.sendData("www.www.www", "user", "pass");

但是,您明白了。 在需要的地方 使用此“模式” ,它可以防止您弄乱代码。

  • 让自定义类定义用户需要与应用程序进行交互的行为

这可能是最有用的一点。要仅定义“ 用户需要与应用程序进行交互的位置
”,假设您有一个

Menu
,它的行为在行数方面非常长,为什么我们将
Menu
的计算保留在同一类中?每一个小项都会使您的
Activity
课程变得更痛苦,因为您的代码看起来像“意大利面条”。例如,不要像这样:

@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {    MenuItem item;    item = menu.findItem(R.id.menu_id_one);    if (aBooleanVariable) {        item.setEnabled(true);    } else {        item.setEnabled(false);    }    // More pre...    return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem i) {    // Code, calculations...    // ...    // ...    return super.onOptionsItemSelected(i);}

重新设计为这样的东西:

private MyCustomMenuInstance mMenuInstance;@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState); setContentView(R.layout.main);    mMenuInstance = new MyCustomMenuInstance();}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {    mMenuInstance.onPrepareOptionsMenu(menu);    return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem i) {    mMenuInstance.onOptionsItemSelected(i);    return super.onOptionsItemSelected(i);}

例如

MyCustomMenuInstance

public class MyCustomMenuInstance {    // Member fields..    public MyCustomMenuInstance() {        // Init stuff.    }    public void onPrepareOptionsMenu(Menu menu) {        // Do things..        // Maybe you want to modify a variable in the Activity         // class? Well, pass an instance as an argument and create        // a method for it in your Activity class.    }    public void onOptionsItemSelected(MenuItem i) {        // Do things..        // Maybe you want to modify a variable in the Activity         // class? Well, pass an instance as an argument and create        // a method for it in your Activity class.    }}

您会看到前进的方向。您可以将此很多事情,例如

onClick
onClickListener
onCreateOptionsMenu
,名单很长。要了解更多“最佳做法”,您可以在此处查看来自Google的一些示例应用程序。寻找他们如何以一种不错且正确的方式实现事物。

遗言; 保持代码干净,以逻辑方式(尤其是正确方式)命名变量和方法。始终要始终了解您在代码中的位置-这非常重要。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5561017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存