什么是 activity?
一个 app 中若干 activity 之间是紧密耦合在一起的吗?
一个新启动的 activity 是保留在哪里?
什么是生命周期?
在一个 activity 中必须实现的是哪个回调方法?
如何把一个布局文件应用到一个 activity?
setContentView(R.layout.activity_main);
一个定义好的 activity 还应该在哪个文件中声明一下?不声明会怎么样?
在 manifest 文件中为什么要配置一下 intent 过滤器?
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
//该过滤器声明本 activity 对 "main" 动作进行响应,并处于 "launcher" 这个类别中
//元素指定该 activity 是 app 的主入口点,元素指定该 activity 放在系统的"应用"中
是通过什么对 activity 启动的?
可以通过哪个方法来关闭一个 activity?
finish()
或 finishActivity(int requestCode)
什么是回调方法?
如何创建第二个 activity?
怎么设置按钮的单击回调方法?该方法在哪里定义?该方法有哪些形式上的要求?
android 中 activity 的启动都是通过什么启动的?
intent 构造方法中的两个参数什么含义?
Intent intent = new Intent(this, SignInActivity.class);
//从 this 启动 SignInActivity
快速引入类的快捷键是什么?
如何取出输入到 EditText 中的文本数据?取出的数据类型是什么?
EditText editText = (EditText) findViewById(R.id.editText);
String message = editText.getText().toString();
什么是键值对?
如何给 intent 附加需要传递的数据?
intent.putExtra(EXTRA_MESSAGE, message);
如何快速定义一个已使用的常量?
如何启动第二个 activity?
Intent intent = new Intent(this, SignInActivity.class);
//从 this 启动 SignInActivity
startActivity(intent);
如何在第二个被启动的 activity 中获取启动它的 intent 对象?
Intent intent = getIntent();
怎么取出第一个 activity 传递过来的数据?如何再显示在屏幕上?
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = findViewById(R.id.textView);
textView.setText(message);
一个 activity 的生命周期中有几种状态?哪几种是稳定状态?这几种稳定状态下,用户可以同它们交互吗?每种状态之间的切换需要调用哪些回调方法?哪些回调方法是比较关键的方法?
启动 activity 到 resumed 稳定状态会经过几个回调方法?
activity 从 resumed 状态到 Destroyed 状态会经过几个回调方法?
在进入暂停状态时会执行哪个回调方法?在该方法中会做哪些操作?为什么需要做这些操作?
从暂停状态回到 resumed 状态,会执行哪个回调方法,在该方法中会做哪些操作?
在 activity 从 resumed 状态到 stopped 状态的时候,需要执行哪些回调方法?在onStop 中执行的操作同在 onPause 方法中有什么区别?
在从 stopped 状态回到 resumed 状态时,恢复资源的操作最好在哪个回调方法中做?为什么?
什么情况下,你的 activity 可能被销毁?在销毁前在哪个回调方法中可以保存 activity 的状态?在重建 activity 的时候会执行哪个回调方法并恢复 activity 的状态?
static final String STATE_SCORE = "playerScore";
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// 保存用户当前的游戏状态
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
// 总是首先调用父类中的onSaveInstanceState方法
super.onSaveInstanceState(savedInstanceState);
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 从保存实例中恢复状态变量值
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // 总是首先调用父类中的 onCreate 方法
// 检查我们是否是在重建以前销毁的本 Activity的实例
if (savedInstanceState != null) {
// 从保存的状态中恢复成员的值
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
} else {
// 新实例中的变量可能需要用默认值进行初始化
}
}
activity 有几种启动模式?它配置在哪个标签的哪个属性中?
standard
:不管有没有已存在的实例,都生成新的实例(activity 可以被多次实例化)singleTop
:若有对应的 activity 实例正位于当前栈顶,系统会直接使用,不再生成新的实例singleTask
:系统创建一个新的 task 并且实例化 activity 为该 task 的根singleInstance
:这种模式限定同一个 task 只能有一个 activity,(别的都和 singleTask 相同)<activity android:name=".AnotherPick" android:launchMode="standard">
standard 模式怎么启动 activity?同一个 task 栈可以有几个相同 activity 的实例?
singleTop 模式启动的 activity 在同一个 task 栈中可以有几个相同 activity 的实例?栈顶可以有几个相同 activity 的实例?
singleTask 模式启动的 activity 在同一个 task 栈中可以有几个相同的 activity 的实例?该实例能在栈的哪个位置?
singleInstance 模式启动的 activity 所在的 task 栈中可以有几个相同的 activity 的实例?在同一个 task 栈中还可以有其他 activity 的实例吗?
intent是什么?需要被启动 activity 返回结果的启动是哪个方法?不需要返回结果的是哪个方法?intent主要用在哪些场景?
显式意图同隐式意图的主要区别在哪里?同这两种不同的意图,系统是如何启动被启动的组件的?
保存在 intent 中的主要信息有哪些?什么是 action?action 在代码中和在 manifest 中的意图过滤器中的表述有何不同?action 必须是系统定义好的吗?自己可以定义 action 吗?
什么是URI?设置URI和设置MIME分别用什么方法?如果同时设置URI及MIME呢?
在 Intent 中附加信息,可以怎么做(两种方式)?
当使用隐式意图进行 activity 的启动的时候,如果没有哪个 activity 能够对相应意图进行响应的时候,我们的代码应该怎么处理?
// 验证是否有activity处理该Intent
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(sendIntent);
}
通常app选择器是什么时候打开的?如何强制打开app选择器?
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show the chooser dialog 创建选择器
Intent chooser = Intent.createChooser(sendIntent, title);
// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}
如何使得一个组件能够响应某类 action?一个组件能不能处理多种 intent?怎么做?同一个意图过滤器中可以有哪几种标签?每种标签可以有几个?
表达某个 activity 为主 activity 的意图过滤器怎么定义?
系统是如何匹配隐式意图的?
分别在同一个 app 中的 activity 中相互切换和调用其他 app 中的 activity 的时候,分别采用什么样的 intent?
如何验证系统中有没有相应的 activity 来响应 intent?
PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent, 0); //0处:PackageManager.MATCH_DEFAULT_ONLY
boolean isIntentSafe = activities.size() > 0;
if (isIntentSafe) {
startActivity(intent);
}
如何强行打开 app 选择器?
Intent intent = new Intent(Intent.ACTION_SEND);
// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, title);
// Verify the intent will resolve to at least one activity
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}
对于需要返回结果的启动 activity 用哪个启动方法?有了返回结果,调用 activity 怎么接收返回结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
TextView textView = (TextView)findViewById(R.id.ma_tv_phoneNumber);
textView.setText(data.getDataString());
}
}
}
为什么在 activity 的 manifest 文件中加入 intent-filter 元素?
如何从 activity 中返回结果?
public void returnTOMain(View view) {
EditText editText = (EditText)findViewById(R.id.ap_et_inputPhoneNumber);
String phoneNumber = editText.getText().toString();
Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse(phoneNumber));
setResult(Activity.RESULT_OK, result);
finish();
}
End.