利用Intent消息传递和其背后的事情
2020-11-08 本文已影响0人
小水neo
利用Intent消息传递和其背后的事情
Intent的使用
显示调用
显示Intent直接指明要启动activity的定义,即activity.class
Intent intent = new Intent(MainActivity.this, ProfileActivity.class);
intent.putExtra("login",loginInfo.getLogin());
startActivity(intent);
隐式调用
Intent filter
常用<action> <data> <category>子元素(intent属性 )
其中<action>可添加多个(VIEW EDIT PICK),但不能为空,否组会因匹配失败而阻塞。
使用
- 默认catgory
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
//xml中注册
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- 自建catgory
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
//xml中加一句
<category android:name="com.example.activitytest.MY_CATEGORY" />
//注意,category可以有多个,所以既是默认又是自建
Intent用于Activity跳转
- 不带参数的调转
- 带参数的跳转:bundle封装键值对
- 带返回值的跳转
阻塞和任务调度
Activity的阻塞
类似于进程阻塞的概念。cpu利用率为 1 - idle/单位时间,若单核cpu,进程阻塞cpu利用率会到100%。
常见任务调度:
FCFS(理论)、 CFS(linux)红黑树、 BFS(Android)bitmap+queue