Android Basic Notes
Android Framework
Dalvik virtual machine
- register-based machine 基于寄存器(不写入内存)
- minimizing instruction dispatch and memory accesses 最小化指令分配黑内存访问
- giving more efficient instruction stream(a lot more semantic content) 提供更加高效的指令流
Basic Building Blocks
- Activity(Managed by activity stack)
- Service(Running in the background;with no UI)
- Broadcast Receiver(Can invoke(调用) activity;with no UI)
- Content Provider(accessing and managing application data)
Android Studio
Plugins
Code generator
- Constructor
- getter/setter
- ViewHolder
- Parcelable Implementation
- GsonFormat : 根据 JSONObject 生成相应类
API Conventions
Manager Service
- PreferenceManager.getDefaultSharedPreferences
- LocalBroadcastManager.getInstance
Activity
Base Activity
查看当前界面属于哪个 Activity,自定义 Activity 继承 BaseActivity
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
}
}
Activity Collector
在所有 Activity 的 onCreate 方法调用静态的 addActivity 方法,onDestroy 方法调用静态的 removeActivity 方法。
ActivityCollector.addActivity(this);
ActivityCollector.removeActivity(this);
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
Start Activity
为每个 Activity 添加静态的 actionStart 方法,供其他 Activity 启用此 Activity
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, thisActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
UI Design
N activities can respond to a particular intent:
Android will pop(弹出) up a little dialogue list(对话框) to user showing application icon defining the intent
当有多个活动可相应某个特定意图时,系统将会弹出对话框提示用户选择一个应用的活动或者设定默认值(default)
e.g web browsers
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Layout
Basic
android:layout_weight
自适配布局android:SingleLine
单行显示模式android:ellipsize="end"
文字过多时缩略方式
Table Layout
<TableLayout android:stretchColumns="1">
拉伸第 2 列android:layout_span="2"
占 2 列
Custom Layout
LayoutInflater 作用是将 layout 的 xml 布局文件实例化为 View 类对象。
View view = LayoutInflater.from(context).inflate(R.layout.title, this/null);