activity

Android扫描条形码实现

♀尐吖头ヾ 提交于 2019-12-04 19:20:48
扫描和识别条形码的android支持库 android支持扫描条形码。不过手里没有真机,无法理解该功能是一个应用,还是一个可API调用的功能。不过在网上找到一个免费开源的android处理条形码的库。见: http://code.google.com/p/zxing 可以作为应用安装到android上,见: http://code.google.com/p/zxing/wiki/GettingStarted 或者,在另外的程序中使用该功能: http://code.google.com/p/zxing/wiki/ScanningViaIntent 编写最简单的android扫描条形码功能 已经有java的第三方开源条形码识别库(zxing)了,在自己的应用中扫描条形码实际上只需调用该第三方库的实现即可。写 扫描和识别条形码的android支持库 的时候还没有g1手机,现在可以试试了。 为了能调用zxing,需要先安装google market中的barcode scanner: 为了能调用zxing,需要先安装google market中的barcode scanner: ‍ 程序很简陋,第一个界面: ‍ 第二个界面,跳到了zxing库提供的Activity去做条形码扫描,这里扫描的是 生成QR二维条码 中的本站url。 ‍ qr码瞬间就可以识别到

Unable to add window --token null is not valid;

我怕爱的太早我们不能终老 提交于 2019-12-04 18:25:51
今天遇到如下错误bug: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 最后终于发现是PopupWindow组件的使用问题,如果你直接在Activity创建的方法中初始化,则会有此错误 因此总结: PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直在 oncreate方法中显示一个PopupWindow,否则永远会有以上错误 参考文章: http://cb269267.iteye.com/blog/1787779 http://blog.csdn.net/fulinwsuafcie/article/details/17192683 http://blog.sina.com.cn/s/blog_4b93170a0100q1km.html 来源: oschina 链接: https://my.oschina.net/u/2363385/blog/528964

解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题

情到浓时终转凉″ 提交于 2019-12-04 17:20:58
之前项目中遇到打开Activity后黑屏的问题,网上找到解决办法是通过设置theme和style属性可以实现。 http://www.cnblogs.com/sunzn/p/3407078.html 之前在做 APP 的时候不太关注这个问题,因为自己在使用其他 APP 的时候也会在应用启动的初始有一个黑屏闪过后才会出现应用的欢迎页。直到最近开发过程中发现自己在欢迎页启动的线程由于请求和处理的数据量过大而,导致欢迎页在出现之前界面上会有一个短暂的白色闪屏停留,当然白色闪屏的停留是因为 application 的主题样式 android:theme = "@style/AppTheme" 使用了 Theme.Light 题导致的,Light 样式的 windowBackground、colorBackground、colorForeground 等属性的值均为 light 也就是白色偏亮,所以才会出现白色闪屏。下面是我的 APP 出现白色闪屏时样式引用的代码: <style name="AppTheme" parent="android:Theme.Light"> </style> 简单的修改后,闪屏颜色为黑色,代码如下: <style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen"> <

第03讲 fragment

♀尐吖头ヾ 提交于 2019-12-04 16:10:11
Fragment 官网文档: https://developer.android.google.cn/guide/components/fragments 什么是Fragment 在手机上,Activity作为用户和应用交互的界面。如果界面上的View较多较复杂时,Activity会较复杂。Fragment提供了一种解决方案,把view放到几个Fragment中,然后再由这些Fragment拼成一个完整的Activity。 如果多个界面中有相同的部分,可以将重复部分放在fragment中,然后在多个activity中使用该fragment,达到风格统一,代码重用的目的。 Fragment的应用场景: Fragment的使用 静态添加Fragment 1. 准备Fragment使用的layout文件 2. 新建Fragment类,继承自Fragment 注意:需要重写onCreateView方法; 推荐使用support-v4包中的Fragment类。 public class LeftFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle

深入理解 intent (1)

拜拜、爱过 提交于 2019-12-04 16:08:27
一. 使用Internt 连接activity 1.创建 intent 用下面的构造方法 Intent.Intent(Context packgeContext ,Class <?> cls ); 或者先构造 一个未指向 的intent,再用下面方法 Intent.getClass(Context packageContext,Class <?> cls); 2.调用 Intent Activity.startActivity( Intent intent); 如果 想下一个Activity时返回原来 的activity ,则 Activity.startActivityForResult (Intent intent ,int requestCode ); note :应用中的activity都要在 manifest文件中注册。 二. 使用activity传递数据 1. 在第一个activity中存入 数据 , Intent.putExra( String name ,String value ); name value 类似于键 值对应的,如HashMap ,name =key。不过这里它们的类型是Bundle(专门为activity面设计 的,本质 是 HashMap的再封装。 2.在目标activity中取出intent中的值 先用getIntent()

Android组件通讯与广播消息(2)—Intent 启动 Activity

别说谁变了你拦得住时间么 提交于 2019-12-04 16:08:13
在Android系统中,应用程序一般有多个 Activity, Intent 可以实现不同 Activity 之间的切换和数据传递。 显式启动 显式启动需要在 Intent 中指明启动的 Activity 所在的类。 关键代码: //1.创建一个 Intent,并为它指定当前程序的上下文,以及要启动的 Activity Intent intent = new Intent(SplashActivity.this,MainActivity.class); //2.把创建好的 Intent作为参数传递给 startActivity()方法 startActivity(intent); 可将上述代码,放到事件监听的响应代码里,实现控制从一个 Activity 启动新的 Activity。 隐式启动 隐式启动不需要指明启动哪一个 Activity ,而由系统来决定。 选择隐式启动 Activity,Android 系统会在程序运行时解析 Intent,并根据一定的规则对 Intent 和 Activity 进行匹配,使 Intent 上的动作、数据与 Activity 完全吻合。//匹配的组件可以是程序本身的 Activity,也可以是 Android 内置的 Activity,还可以是第三方应用程序提供的 Activity。 关键代码: //Intent构造函数第一个参数是 Intent

糊里糊涂学Android(1)——Activity之间的数据传递

喜夏-厌秋 提交于 2019-12-04 16:07:21
在Activity之间传递数据,主要的方法有四种: 利用静态字段传递; 利用Intent传递; 利用ClipboardManager传递; 利用全局变量传递。 下面就一一道来,首先呢,创建一个Android Application Project,自取名DataTransfer,class为Main.java。要实现数据传递,至少要两个Activity,所以分别添加一个class——Other.java(继承自Activity),和一个layout文件——other.xml,并在 AndroidManifest.xml中写入Other这个Activity 。然后在main.xml中添加一个按钮Button,在other.xml中添加一个TextView,实现在点击Button时,跳转到Other,并显示传递的数据。(注:具体代码在最后给出) 1.利用静态字段传递 这种方法应该是最简单的一种了,利用每个Activity子类的公有静态字段传递,无论是当前Activity中的字段,还是要跳转到的Activity中的字段,都可以作为数据传递的载体。因为静态字段是类的对象所共有的,与具体实例无关,所以用该方法可以实现数据传递。具体实现是比较简单的,比如在Main和Other中各添加一个公有静态String字段,在响应按钮点击事件的方法中,分别将两个字段赋值

安卓内存泄漏8种可能

亡梦爱人 提交于 2019-12-04 15:07:00
java垃圾回收器,开发者无需特意管理内存分配,降低了应用由于局部故障导致崩溃,同时防止未释放的内存把堆栈挤爆的可能,所以写出的代码更为安全。 但是,在java中仍存在很多容易导致内存泄漏的逻辑可能。如果不小心,则很容易浪费掉未释放的内存,最终导致内存用光的错误抛出OOM 内存泄漏 一般内存泄漏(traditional memory leak):由忘记释放分配的内存导致的(Cursor忘记关闭等) 逻辑内存泄漏(logical memory leak):当应用不再需要这个对象,但仍未释放该对象的所有引用 如果持有对象的强引用,垃圾回收器是无法在内存中回收这个对象 Android 中,最容易引发的内存泄漏为 Context,如Activity的Context,就包含了大量的内存引用,如View Hierarchies和其他资源。一旦泄漏Context,就意味着泄漏它指向的所有对象。android机器内存有限,太多的内存泄漏容易导致OOM Activity.onDestroy()被视为Activity生命的结束,程序上看来,它应该被销毁,或者Android系统需要回收这些内存(当内存不够时,android会回收看不见的activity) 如果Activity.onDestroy()执行完,堆栈中仍存在持有该activity的引用,垃圾回收器就无法把他标记成已回收的内存

内存泄漏解决方式

旧巷老猫 提交于 2019-12-04 15:06:51
避免 static Activity activity; 这样的代码,或在销毁时置为null 单例模式中Singleton的getInstance()方法时传入的context尽量传入context.getApplication(因为单例的生命周期为应用生命周期) 避免 static Views ;这样的代码,或在销毁时,置为null 内部类解决内存泄漏方式:1.内部类改为静态内部类,匿名内部类改为静态匿名内部类,,,,2.如果有强引用Activity中的属性,则将该属性的引用方式改为弱引用,,,,,3.在业务允许的情况下,在Activity执行onDestroy时,结束这些耗时任务 Handler内存泄漏解决方式:1.把Handler类放在单独的类文件中,或者使用静态内部类便可以避免泄漏,,,,,,2.如果想在Handler内部去调用所在的Activity,那么可在Handler内部使用弱引用的方式指向所在Activity,那么可以在handler内部使用弱引用的方式去指向所在Activity,使用static+weakReference的方式达到断开Handler与Activity之间存在引用关系的目的。,,,,,,3.在界面销毁时,释放handler资源(置null) 最主要原因为线程的生命周期不可控,若线程为Activity的内部类

Android进程保活招式大全

让人想犯罪 __ 提交于 2019-12-04 14:48:49
作者:腾讯——张兴华 目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 Android 进程拉活进行一个总结。 Android 进程拉活包括两个层面: A. 提供进程优先级,降低进程被杀死的概率 B. 在进程被杀死后,进行拉活 本文下面就从这两个方面做一下总结。 1. 进程的优先级 Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存。 为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进程放入“重要性层次结构”中。 必要时,系统会首先消除重要性最低的进程,然后是清除重要性稍低一级的进程,依此类推,以回收系统资源。 进程的重要性,划分5级: 前台进程(Foreground process) 可见进程(Visible process) 服务进程(Service process) 后台进程(Background process) 空进程(Empty process) 前台进程的重要性最高,依次递减,空进程的重要性最低,下面分别来阐述每种级别的进程 1.1. 前台进程 —— Foreground process 用户当前操作所必需的进程。通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 A.