use*_*209 15 lifecycle android android-activity
假设我有一个Hello World单个Activity应用程序.我启动这个应用程序.
在每种情况下调用哪些方法:
一旦用户通过应用程序图标再次启动应用程序,就会调用哪些方法(假设操作系统没有"其他应用程序需要内存条件"):
谢谢大家.
编辑:额外信用:用户如何在onPause不调用的情况下调用onStop?
big*_*nes 25
按下主页按钮和接听电话不会从任务堆栈中删除活动,并且在您重新进入app => onPause()=> onStop()时可用.
如活动生命周期图所示,重新进入app calls => onRestart()=> onStart()=> onResume()
按后退按钮代替杀死activity => onPause()=> onStop()=> onDestroy()
在这种情况下重新进入应用程序调用classics => onCreate()=> onStart()=> onResume()
编辑
来自http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
如果活动失去焦点但仍然可见(即,新的非全尺寸或透明活动专注于您的活动),则会暂停活动.暂停的活动完全处于活动状态(它维护所有状态和成员信息并保持附加到窗口管理器),但可以在极低内存情况下被系统杀死.
Arp*_*tel 23
为了解ACTIVITY LIFECYCLE,我创建了演示.请参阅此处
我补充说,不同的案例研究.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String TAG = "State changed";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate: ");
}
public void OpenDialog(View view) {
final AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); //Read Update
alertDialog.setTitle("hi");
alertDialog.setMessage("this is my app");
alertDialog.setButton("Continue..", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
alertDialog.dismiss();
}
});
alertDialog.show(); //<-- Show dialog
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart: " );
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume: ");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause: ");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop: ");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "onRestart: ");
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState: ");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG, "onRestoreInstanceState: ");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy: ");
}
@Override
public void onBackPressed() {
super.onBackPressed();
Log.i(TAG, "onBackPressed: ");
}
}
Run Code Online (Sandbox Code Playgroud)
案例分析
案例1 =首先单击应用程序图标
注意:这里没有显示onRestoreInstanceState,因为它在运行时执行
我/州改变了:onCreate:
I/State改变了:onStart:
I/State改变了:onResume:
案例2 =单击主页按钮(当屏幕关闭或来电时相同)
I/State改变了:onPause:
I/State已更改:onSaveInstanceState:
I/State改变了:onStop:
案例3 =(案例2继续)通过最近打开应用程序
我/州改变了:onRestart:
I/State改变了:onStart:
I/State改变了:onResume:
案例4 =单击"返回"按钮(onBackPressed方法调用)
I/State改变了:onPause:
I/State改变了:onStop:
I/State改变了:onDestroy:
案例5 =迁移变更(旋转屏幕)
I/State改变了:onPause:
I/State已更改:onSaveInstanceState:
I/State改变了:onStop:
I/State改变了:onDestroy:
我/州改变了:onCreate:
I/State改变了:onStart:
I/State已更改:onRestoreInstanceState:
I/State改变了:onResume:
小智 7
可能有几种情况
从应用程序图标打开应用程序。调用以下方法
onCreate()-->onStart()-->onResume()
当用户按下主页按钮时
onPause()-->onStop()
当用户从 Activity Stack 返回到应用程序时
onRestart()-->onStart()--> onResume()
当应用程序正在运行并且用户按下电源按钮时
onPause()-->onStop()
当用户解锁手机时
onRestart()-->onStart()--> onResume()
当您在应用程序中时用户接到来电时
暂停()
当用户挂断电话后返回应用程序时
onResume()
当用户按下应用程序的后退按钮时
onPause()-->onStop()-->onDestroy()
| 归档时间: |
|
| 查看次数: |
19604 次 |
| 最近记录: |