imsdroid启动Activity的方式很独特

简介: imsdroid启动Activity的方式很独特

  近来在调试imsdroid,想限制转屏。结果发现常用的办法无效。这是为什么呢?后来研究了一下启动Activity的代码,有点独特。具体代码是:

  @Override
  public boolean show(Class<? extends Activity> cls, String id) {
    final Main mainActivity = (Main)Engine.getInstance().getMainActivity();
    String screen_id = (id == null) ? cls.getCanonicalName() : id;
    Intent intent = new Intent(mainActivity, cls);
    intent.putExtra("id", screen_id);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    final Window window = mainActivity.getLocalActivityManager().startActivity(screen_id, intent);
    if(window != null){
      View view = mainActivity.getLocalActivityManager().startActivity(screen_id, intent).getDecorView();
      LinearLayout layout = (LinearLayout) mainActivity.findViewById(R.id.main_linearLayout_principal);
      layout.removeAllViews();
      layout.addView(view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
      // add to stack
      this.mLastScreens[(++this.mLastScreensIndex % this.mLastScreens.length)] = screen_id;
      this.mLastScreensIndex %= this.mLastScreens.length;
      return true;
    }
    return false;
  }

  初步分析来说,相当于把一个Activity作为容器,然后把另外一个Activity放进去。也就是说,要想设置,就必须在主Activity中(或者在Manifest.xml)。

目录
相关文章
|
分布式计算 Linux Spark
【已解决】Caused by: java.net.SocketException: Connection reset by peer: socket write error
【已解决】Caused by: java.net.SocketException: Connection reset by peer: socket write error
592 0
|
存储 SQL 分布式计算
基于flink 的LakeHouse湖仓一体平台
基于flink 的LakeHouse湖仓一体平台
基于flink 的LakeHouse湖仓一体平台
|
数据处理
带你读《中国零售行业数智化成熟度白皮书》附录(1)
带你读《中国零售行业数智化成熟度白皮书》附录(1)
180 0
java202304java学习笔记第五十三天员工管理-会话跟踪技术-cookie之1
java202304java学习笔记第五十三天员工管理-会话跟踪技术-cookie之1
103 0
|
开发框架 JavaScript 前端开发
编程语言大对决!Ruby和Python谁更可读?(2)
编程语言大对决!Ruby和Python谁更可读?
236 0
shell 清空文件方法
shell 清空文件方法
|
安全 Java 编译器
猿创征文|点亮JAVA技术之灯(线程篇)
猿创征文|点亮JAVA技术之灯(线程篇)