Android2高级编程读书笔记——第二章(1)
硬件限制带来的设计考虑:
开发要假设网络情况糟糕的情况,可以把模拟器的在run configuration选项卡中选择target找到Network Speed设置为EDGE模式
考虑用户环境:
行为得当:当应用程序不可见时,暂停UI更新和网络查找,后台运行使用Service,没有额外的UI开销
流畅的从后台切换到前台:可以通过保存程序的状态并把更新放入队列保障这点
合理:决不能抢占注意力,或打断用户当前的活动。当程序不在前台时可以使用Toast或者通知提示用户关注
呈现一致的用户界面
快速响应:
Android通过下面两个条件来确定响应性:
- 应用程序必须在5秒内对任何用户动作做出响应
- 一个BroadcastReceiver必须在10秒内从它的onReceive方法返回
最有可能导致没有响应错误的原因是:网络查找、复杂计算、文件I/O。有很多方法保证这些动作不会超过响应条件,比如服务,工作线程等。
实战例子todoItem
layout文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/myEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="New To Do Item" /> <ListView android:id="@+id/myListView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
java文件:
package com.example.todo_list; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView myListView = (ListView)findViewById(R.id.myListView); final EditText myEditText = (EditText)findViewById(R.id.myEditText); final ArrayList<String> todoItems = new ArrayList<String>(); final ArrayAdapter<String> aa; aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems); myListView.setAdapter(aa); myEditText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN){ todoItems.add(0, myEditText.getText().toString()); aa.notifyDataSetChanged(); myEditText.setText(""); return true; } return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
相关推荐
huha 2020-10-16
xfcyhades 2020-11-20
sgafdsg 2020-11-04
Michael 2020-11-03
fengyeezju 2020-10-14
ziyexiaoxiao 2020-10-14
业余架构师 2020-10-09
OuNuo0 2020-09-29
moses 2020-09-22
Angelia 2020-09-11
qinxu 2020-09-10
刘炳昭 2020-09-10
Nostalgiachild 2020-09-07
Nostalgiachild 2020-08-17
leavesC 2020-08-14
一青年 2020-08-13
AndroidAiStudy 2020-08-07
ydc0 2020-07-30
绿豆饼 2020-07-28