Android Activity

  • 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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.活动是什么 Activity 活动是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交...
    随心者随心行阅读 233评论 0 0
  • 当你决定要学习android的时候,这时候就需要制定一个学习路线,而我们应该从哪里入手呢?你可以想象一下,当你打开...
    强大帅阅读 8,057评论 2 10
  • 【 Android四大组件之一 主要用于与用户进行交互,在一个App中可能存在零个或多个Activity 】 1....
    征程_Journey阅读 1,979评论 0 4
  • Activity https://developer.android.com/guide/components/a...
    XLsn0w阅读 727评论 0 4
  • 01 这么说吧,每个员工都想巴结领导。 这是一个技术性非常强的工种,其难度要远远超出编程,翻译或是写作。那些工作你...
    东方一郎作者阅读 1,216评论 0 2