美文网首页
Android Activity

Android Activity

作者: EvanPoison | 来源:发表于2017-05-23 13:42 被阅读16次
    • activity之intent
      • activity的跳转通过intent,分显式意图和隐式意图
      • 显式意图:直接传入要跳转的activity,和上下文,通过startActivity(intent)
      • 隐式意图:要指明action和category,然后在清单文件中activity·标签中配置<intent-filter>,一般要两者都匹配上,才能启动该activity,<intent-filter>如果配置的category·是默认的,则不需要指明category
      • 每个intent只能指明一个action,可以有多个category
      • 隐式intent不但能启动自己程序里的活动,还能启动其他程序里的活动,如启动系统的浏览器
     Intent intent = new Intent(Intent.ACTION_VIEW);
     intent.setData(Uri.parse("http:www.baidu.com"));
     startActivity(intent);
    
    • setData(Uri uri):指明操作的数据,<intent-filter>中也要配置<data>,才能用隐式意图启动
    • 调用系统拨号界面
    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:10086"));
    startActivity(intent);
    
    • intent携带数据:putExtra(key,value),获取数据:如string类型的,getIntent().getStringExtra()
    • intent返回数据:startActivityForResult(int requestCode,Intent intent),在被开启的activity中返回数据时,调用setResult(“RESULT_OK”,intent)返回数据,重写onActivityResult()取得数据
    • 重写返回键:onBackPressed()
    • 活动的四种状态:处于栈顶,不处于栈顶但仍然可见,不可见,销毁状态
    • 活动的生命周期:
      • onCreate():加载布局,绑定布局
      • onStart():不可见到可见
      • onResume():可见,并获取焦点
      • onPause():失去焦点
      • onStop():不可见
      • onDestroy():被销毁
      • onRestart():由不可见到可见
    • 活动被系统回收:当activityA启动到ActivityB,ActivityA不可见,有可能被系统回收,这时,按返回键,activityA还是能看到,但是已经被重新创建了,而不是走的onRestart(),如何解决呢?通过重写onSaveInstanceState()保存数据
     @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            String tempData = "hello";
            outState.putString("save_data",tempData);
        }
    

    如何在activity重新创建的时候取出数据呢?

      @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            if(savedInstanceState!=null){
                String data = savedInstanceState.getString("save_data");
            }
        }
    
    • 获取当前任务栈的id:getTaskId()
    • 杀死当前应用: android.os.Process.killProcess(android.os.Process.myPid());

    能不能来一点有趣的知识

    1.activity的跳转动画
    通过overridePendingTransition()方法

        Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            overridePendingTransition(R.anim.screen_zoom_in, R.anim.screen_zoom_out);
            finish();
    

    相关文章

      网友评论

          本文标题:Android Activity

          本文链接:https://www.haomeiwen.com/subject/avswxxtx.html