Rav*_*abu 18 android android-lifecycle android-activity
有关活动的官方文档列出了7种生命周期方法.
onPostResume() 没有引用生命周期法.
但我觉得这种方法很重要.
在生命周期中,当一个活动从隐藏到显示状态可见时,
onRestart()
onStart()
onResume()
onPostResume()
Run Code Online (Sandbox Code Playgroud)
已被按顺序调用.
我的代码片段:
package ravindra.projects.my_app_1;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText txtUserName;
private EditText txtPassword;
Button loginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Ravi","Main OnCreate");
txtUserName=(EditText) findViewById(R.id.username);
txtPassword=(EditText) findViewById(R.id.password);
loginButton = (Button) findViewById(R.id.login);
loginButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d("Ravi", "Login processing initiated");
Intent intent = new Intent(this,LoginActivity.class);
Bundle bundle = new Bundle();
bundle.putString("userName",txtUserName.getText().toString());
bundle.putString("password",txtPassword.getText().toString());
intent.putExtras(bundle);
startActivityForResult(intent,1);
// IntentFilter
}
public void onActivityResult(int requestCode, int resultCode, Intent resIntent){
Log.d("Ravi back result:", "start");
String result = resIntent.getStringExtra("result");
Log.d("Ravi back result:", result);
TextView txtView = (TextView)findViewById(R.id.txtView);
txtView.setText(result);
}
@Override
protected void onStart() {
super.onStart();
Log.d("Ravi","Main Start");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("Ravi","Main ReStart");
}
@Override
protected void onPause() {
super.onPause();
Log.d("Ravi","Main Pause");
}
@Override
protected void onResume() {
super.onResume();
Log.d("Ravi","Main Resume");
}
@Override
protected void onStop() {
super.onStop();
Log.d("Ravi","Main Stop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Ravi","Main OnDestroy");
}
@Override
protected void onPostResume() {
super.onPostResume();
Log.d("Ravi","Main PostResume");
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
}
Run Code Online (Sandbox Code Playgroud)
实现 onPostResume()通过跳过下面的方法不达到目的?
onRestart(), onStart(), onResume()
Run Code Online (Sandbox Code Playgroud)
如果实施这三种方法有什么好处onPostResume()?
onRestart(), onStart(), onResume()
Run Code Online (Sandbox Code Playgroud)
jit*_*555 28
onPostResume:
在活动恢复完成时调用(在调用活动的{@link #onResume}之后).应用程序通常不会实现此方法; 它适用于系统类在应用程序恢复代码运行后进行最终设置.
它会做以下事情
它将确保用户可以看到屏幕,并将为活动进行最终设置.
使用代码"what"在消息队列中删除所有待处理的消息帖子.
检查所有片段是否已恢复,并将控制器FragmentManager管理的所有片段移动到恢复状态.
对控制器的FragmentManager管理的片段执行任何挂起的操作.
如果你检查生命周期老虎钳它的工作方式如下
onResume() - 活动
onResume() - 片段 check third point as explained above
onPostResume() - 活动
onPostResume 主要保留用于在任何子类完成恢复后想要完成某种设置的系统操作.
它有用的两件事(可能让你觉得它很重要)是在你的嵌套片段也恢复后以及保证应用程序对用户可见时(在onResume期间可能尚未显示)之后执行操作.
在查看Sources时,从方法名称中可能会有点混乱,但如果您记录流程,您将看到发生的情况是
我会为任何未来的读者添加一个警告 - 如果你使用onPostResume来等待你的片段,调用一些get方法(例如),那么你就会有一个糟糕的,不可靠的设计.您应该从片段中获得回调模式,并在准备好时将片段"发送"回活动
| 归档时间: |
|
| 查看次数: |
13270 次 |
| 最近记录: |