activity

与popupwindow有关的坑,Activity A打开B,B调起popupwindow,B会瞬间透明并且看到A?

匿名 (未验证) 提交于 2019-12-03 00:39:02
<item name="android:windowIsTranslucent">true</item> 之前为了在另外的控件上达到透明效果,在activity的theme上增加了上面这个参数,由于对应的theme是全局的,改变了所有引用这个theme的activity。现在好了问题找到了,解决办法就是找到对应的theme去掉这个参数,或者新建个theme给需要弹popupwindow的activity用就可以了。 另外在还出现个问题,B调起过popupwindow过后,返回到A,在这个过程会出现短暂的黑屏,这个网上有解决方法: PS:我在退出时,又Add了一次,能不黑屏吗? 记录一下,免得下次又踩到这个坑里了! 文章来源: 与popupwindow有关的坑,Activity A打开B,B调起popupwindow,B会瞬间透明并且看到A?

启动白屏终极解决方案

匿名 (未验证) 提交于 2019-12-03 00:38:01
React Native启动白屏是一个很普遍但又很严重的问题,网上也有很多文章,这里就此问题,从分析到常用的解决方案做一个简单的总结。 先看图,白屏的现象: 图中手机为ZTE星星2号(专用测试机,为嘛?因为公司没给配啊,还有自己买的,所以就是专用的喽),Andriod 4.4的,可以看到白屏现象很严重,最后用自己的华为mate9,Android 8.0系统进行了测试,依然存在白屏的现象。 网上的解决方案,大概分为两种: 对ReactRootView以及ReactInstanceManager进行预加载,也就是说在本地配置一个启动界面,然后开始预加载RN的核心引擎,等完毕后直接跳转到RN的主界面,RN的主界面拿到初始化好的ReactRootView直接进行加载。这种方案,自己尝试了下,并不可行,只是减少了白屏的显示时间,实际上依然会有一小段时间的白屏现象。另外,采用这种方式,RN中组件的生命周期会得不到正确的执行。 在白屏上预先覆盖一张图片用于遮掩白屏,等到RN相关的ReactRootView初始化完毕后再移除掉,作者的博客: https://www.jianshu.com/p/78571e5435ec 下面就这两个方案做一下简单的分析。 我的React Native 版本号为0.53.3,ReactActivity是RN的入口 ReactActivity源码 public

通过两种监听app应用启动的方式,实现引导页每次启动的效果

匿名 (未验证) 提交于 2019-12-03 00:38:01
这种方式在application里面进行监听,根据FrameWork提供的监听来来判断启动的activity的数量来进行判断。 registerActivityLifecycleCallbacks( new ActivityLifecycleCallbacks() { @Override public void onActivityCreated (Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted (Activity activity) { mFinalCount++; //如果mFinalCount ==1,说明是从后台到前台 Log.e( "onActivityStarted" , mFinalCount + "" ); if (mFinalCount == 1 ){ //说明从后台回到了前台 Intent intent = new Intent(getApplicationContext(), StartActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } } @Override public void onActivityResumed

Android 列表单选对话框

匿名 (未验证) 提交于 2019-12-03 00:36:02
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.test11.MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" android:onClick="btn1Onclick"/> <

利用反射拿到Android的整个Activity栈。

匿名 (未验证) 提交于 2019-12-03 00:36:02
转自https://www.jianshu.com/p/ac0b237bac03 利用反射拿到Android的整个Activity栈。 Jerry2015 关注 2016.11.21 21:25* 字数 763 阅读 4306 评论 6 喜欢 9 赞赏 1 不关心废话,直接需要结果的,可以参考这里: https://github.com/aesean/ActivityStack 由于各种各样的原因,我们项目里部分地方需要用到获取当前App的所有Activity列表。我们之前的做法是比较简单粗暴的,就是Application里维护一个Activity的弱引用List,每次创建Activity的时候把Activity的实例Add到List里。直觉告诉我这样写很不好,但是项目里用这种方式代码也一直跑的好好的没出什么问题,泄漏的地方该处理的也都处理了。直觉告诉我,Framework里肯定某个地方持有了所有的Activity。类似android.app.FragmentManager并没有像supportFragmentManager那样提供getFragments方法,但是我们知道其实只是android.app.FragmentManager没有把mActive public而已(原因就只有Google自己知道了),自己反射是很容易拿到mActive引用的。

Fragment 使用和坑

匿名 (未验证) 提交于 2019-12-03 00:34:01
fragment 相比于activity更加节约内存,fragment 可以灵活的在activity中加载、切换,同时也有自己的生命周期 Fragment 优点 Fragment 可以将 Activity 分离成多个可重用的组件,每个都有它自己的生命周期和 UI。 Fragment可以轻松得创建动态灵活的 UI 设计,可以适应于不同的屏幕尺寸。从手机到平板电脑,在不同的安卓设备上统一你的UI。 Fragment是一个独立的模块,紧紧地与 activity 绑定在一起。可以运行中动态地移除、加入、交换等。 Fragment解决Activity之间的切换不流畅,轻量切换。 Fragment替换TabActivity做导航性能更好。 1、静态加载:直接写入到 layout 中 2、动态加载:使用FragmentManager进行管理(通常使用 supportFragmentManager),开启 transaction ,添加以后,commit 前者适用于页面较少的情况,后者适用于页面较多的情况。FragmentStatePagerAdapter 在每次view pager 切换页面的时候,是回收了内存的。前者只是调用了 detach 方法和activity分开,没有释放内存。 使用FragmentPagerAdapter+ViewPager时,切换回上一个Fragment页面时

Android am 命令使用

匿名 (未验证) 提交于 2019-12-03 00:34:01
1、开启 Activity 、服务、 广播知识讲解 通过 adb shell 你可以 使用 activitymanager ( am) 工具来执行不同的系统操作,如开启一个 actions 、开启一个 activity 、强制停止一个线程、发送要给广播、修改设备屏幕属性等等。 a db shell 命令格式如下 am <command> Intent 可以理解为不同组件通信的媒介或者信使。 Intent 可以启动一个 Activity ,也可以启动一个 Service ,还可以发起一个广播 Broadcast 。 通过 Intent ,你的程序可以向 Android 表达某种请求或者意愿, Android 会根据意愿的内容选择适当的组件来完成 请求 Activity 、服务、 广播知识讲解 例子: 编写 一个 APK ,有 Activity ,广播,服务器,支持各种 Intent 类型 方法一:有源码情况下,直接从 AndroidMainfest.xml 文件查看 方法二:使用命令: adbshell dumpsys < 包名 > 方法三:取出 APK 使用 aapt 工具查询: aaptdump badging < file_path.apk > 方法四:取出 APK 反编译出 AndroidMainfest.xml 进行查看 查询 Activity 、服务、广播 ①通过包名查看

Android性能优化之布局优化

匿名 (未验证) 提交于 2019-12-03 00:34:01
Android性能优化之布局优化 一、Android系统是如何处理UI组件的更新操作的   既然和布局相关,那么我们需要了解Android系统是如何处理UI组件的更新操作的。   1、Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。   2、CPU负责把UI组件计算成Polygons,Texture纹理,然后交给GPU进行栅格化渲染。   3、GPU进行栅格化渲染。   4、硬件展示在屏幕上。    那么什么是栅格化呢?Resterization栅格化是绘制那些Button,Shape,Path,String,Bitmap等组件最基础的操作,它把那些组件拆分到不同的像素上进行显示,如上图所示,手机的屏幕其实都是有一个一个小格子组成的图片,而当这些小格子非常非常小的时候,。这是一个很费时的操作,因此这也是为什么要引入GPU原因。   每次从CPU转移到GPU是一件很麻烦的事情,所幸的是OpenGL ES可以把那些需要渲染的文理Hold在GPU的Memory里面,在下次需要渲染的时候直接进行操作。 Android里面那些由主题所提供的资源,例如Bitmap,Drawables都是一起打包到统一的Texture文理当中, 然后再传递到GPU里面

Android中Activity布局及其加载

匿名 (未验证) 提交于 2019-12-03 00:33:02
XML中设置了某种布局,需要在Java程序(如 Activity)中,在 onCreate()方法中调用相应的setContentView()来显示这种布局,如setContentView(R.layou布局XML文件名。此时一般不需编写很多的Java代码,其优点是直观、简洁,并实现了UI界面和Java逻辑代码的分离。在示例工程中的 TextViewSimple工程就是采用的这种XML布局,取出存于main.xml中ID为 mytextview的 TextView(需先在main.xml中定义好),并在标题中显示,部分代码参见代码段1,结果如图1所示。 //代码1在Java代码中引用在XML中完成的布局 import android app. Activity; import android.os.Bundle; import android.widget.TextView; public class TextViewSimple_MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState){ Super.onCreate(savedInstancestate); setContentView(R. layout. main);//采用main.xml布局,其设定了

Android之获取当前Activity名称

匿名 (未验证) 提交于 2019-12-03 00:32:02
一、创建类ActivityCollector public class ActivityCollector { public static List<Activity> activities = new ArrayList<>() ; public static void addActivity (Activity activity) { activities .add(activity) ; } public static void removeActivity (Activity activity) { activities .remove(activity) ; if (!activity.isFinishing()) { activity.finish() ; } } public static void finishAll () { for (Activity activity: activities ){ if (!activity.isFinishing()) { activity.finish() ; } } activities .clear() ; } } 二、创建一个BaseActivity类继承与AppCompatActivity,让工程里所有的Activity都继承于BaseActivity。 public class BaseActivity