按Home键时运行哪种方法?

mik*_*ike 6 android onresume oncreate android-homebutton

我有一个Home替换活动,您可以在其中启动许多应用程序.点击"主页"按钮后,您将返回"我的主页"替换活动.

据我所知,点击主页按钮会创建启动主屏幕的意图,然后启动该意图(我可能错了,如果我是,请纠正我!).如果是这种情况,我希望onCreate()只要创建主屏幕就会运行该方法.另一方面,当您启动另一个活动时,主屏幕将调用onPause().所以返回它会让我假设onResume()被调用.

如果有人可以在这个问题上提供一些启示,那么基本的问题是当我点击主页按钮时是否onResume()或被onCreate()调用,但是欢迎其他细节,我正在研究那些利用这个问题并且想要了解很多内容的东西. .

小智 10

当您第一次安装应用程序后,在Activity中逐个调用方法

  1. 的onCreate()
  2. 在onStart()
  3. 的onResume()

之后按Home Button然后按下方法调用

  1. 的onPause()
  2. 的onStop()

注意:按Home键后onDestroy()方法不能调用.

以下代码用于演示目的.首先在模拟器或设备中运行您的代码,然后单击HOME按钮检查控制台中的结果.

package com.example.checkdataversion;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    private static final String TAG = "main";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Log.i(TAG, "oncreate");
    setContentView(R.layout.fragment_main);
}

@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    Log.i(TAG, "onstart");
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    Log.i(TAG, "onresume");

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    Log.i(TAG, "onpause");
}

@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    Log.i(TAG, "onstop");
}

@Override
protected void onDestroy() {

    super.onDestroy();
    Log.i(TAG, "ondestroy");
}
Run Code Online (Sandbox Code Playgroud)

}


Com*_*are 8

点击"主页"按钮可创建启动主屏幕的意图,然后启动该意图

正确.

如果是这种情况,我希望每当创建主屏幕时都会运行onCreate()方法

不必要.如果它已经在运行,它将被调用onNewIntent().

如果有人可以在这个问题上提供一些启示,那么基本的问题是当我点击Home按钮时是否调用onResume()或onCreate()

任何活动从用户输入的角度返回到前台的任何时候都会onResume()被调用.主屏幕在这方面应该没有什么不同.

onCreate()创建活动时调用.不会创建现有活动,而只是将其带回前台.如果触发活动返回前台的是一个startActivity()调用,则将调用该活动onNewIntent()onResume()(并且通常onStart()就此而言).