按Home键时运行哪种方法?

时间:2013-07-09 15:57:03

标签: android oncreate onresume android-homebutton

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

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

如果有人可以对此问题提供一些启示,那么基本问题是当我点按“主页”按钮时是否会调用onResume()onCreate(),但欢迎提供其他详细信息,我正在努力利用这一点并且想要了解很多的东西。

3 个答案:

答案 0 :(得分:9)

在活动

中逐个安装应用程序后,逐个方法调用
  1. 的onCreate()
  2. 在onStart()
  3. 的onResume()
  4. 之后按Home键然后按方法调用

    1. onPause()
    2. 的onStop()
    3. 注意:按主页按钮后,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");
      }
      

      }

答案 1 :(得分:8)

  

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

正确。

  

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

不一定。如果它已在运行,则会使用onNewIntent()调用它。

  

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

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

创建活动时会调用

onCreate() 。不会创建现有活动,而只是将其带回前台。如果触发活动返回到前台的是startActivity()次调用,则会使用onNewIntent()onResume()(通常为onStart()来调用该活动)。

答案 2 :(得分:1)

很简单,你只需要覆盖onAttachedToWindow()

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);           
}

然后轻松按下主页按钮

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {     

    if(keyCode == KeyEvent.KEYCODE_HOME)
    {

       //do some stuff 

    }
});

http://nisha113a5.blogspot.fr/

获取

希望得到这个帮助。