Android开发杂记

原创 2013年12月05日 17:47:30

1、如果在一个activity A的onCreate()或者onResume()方法中调用方法startActivity()启动另一个activity B,那么activity B会在activity A的onResume方法结束后才启动,为了防止启动activity B时出现画面闪烁,activity A的window不会显示。

参考Activity.java的startActivityForResult()方法的注释。

    /**
     * Launch an activity for which you would like a result when it finished.
     * When this activity exits, your
     * onActivityResult() method will be called with the given requestCode. 
     * Using a negative requestCode is the same as calling 
     * {@link #startActivity} (the activity is not launched as a sub-activity).
     *
     * <p>Note that this method should only be used with Intent protocols
     * that are defined to return a result.  In other protocols (such as
     * {@link Intent#ACTION_MAIN} or {@link Intent#ACTION_VIEW}), you may
     * not get the result when you expect.  For example, if the activity you
     * are launching uses the singleTask launch mode, it will not run in your
     * task and thus you will immediately receive a cancel result.
     *
     * <p>As a special case, if you call startActivityForResult() with a requestCode 
     * >= 0 during the initial onCreate(Bundle savedInstanceState)/onResume() of your
     * activity, then your window will not be displayed until a result is 
     * returned back from the started activity.  This is to avoid visible 
     * flickering when redirecting to another activity. 
     *
     * <p>This method throws {@link android.content.ActivityNotFoundException}
     * if there was no Activity found to run the given Intent.
     *
     * @param intent The intent to start.
     * @param requestCode If >= 0, this code will be returned in
     *                    onActivityResult() when the activity exits.
     * @param options Additional options for how the Activity should be started.
     * See {@link android.content.Context#startActivity(Intent, Bundle)
     * Context.startActivity(Intent, Bundle)} for more details.
     *
     * @throws android.content.ActivityNotFoundException
     *
     * @see #startActivity 
     */
    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
        ...//代码详见 Activity.java
  }

2、layout A使用<include >包含另外一个layout B时,覆盖layout B中的属性满足两个规则:

1)<include >的android:id属性会覆盖layout B的android:id属性;

2)<include >只能覆盖layout B中的android:layout_相关的属性,并且至少覆盖android:layout_widthandroid:layout_height属性,否则<include >中包含的layout相关的属性会被忽略。

3、在Activiy被销毁(主动调用finish方法或者被系统销毁)时,在Activity中创建的Thread并不会被一起销毁,特别是带有循环的thread,为了防止内存泄露,应该手动销毁thread。

public class DemoActivity extends Activity {
    ...
    
    //线程结束标志
    boolean stopThread = false;

    ...
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ...
        
        // 创建新线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                Log.d(TAG, "thread is Runing....");
                while (!stopThread) {
                    // do something
                }
                Log.d(TAG, "thread is over....");
            }
        }).start();
        
        ...
    }

    ...
    
    @Override
    protected void onDestroy() {
        // 置位线程结束标志
        stopThread = true;
        super.onDestroy();
    };
    
    ...
    
}

4、Android的Task是完成一项具体的工作所涉及的Activity(可能来自不同的Application)的集合,这些Activity按被启动的顺序放在一个Back Stack中。

“A task is a collection of activities that users interact withwhen performing a certain job. The activities are arranged in a stack (the "back stack"), in theorder in which each activity is opened.” Tasks and Back Stack

写博客杂记

springmvc RequestParam中文乱码 在xml里添加 encodingFilter org.springframework.web.filter.Character...
  • riverflowrand
  • riverflowrand
  • 2017年01月16日 15:03
  • 137

Thread (线程)(杂记)

1、指运行中的程序的调度单位。 2、一个进程可以拥有多个线程,一个线程必须必须有一个父进程。 3、一般情况下,线程具有就绪、阻塞和运行三种基本状态。 4、支持多处理器的操作系统都提供编程接口来让...
  • wangwei129549
  • wangwei129549
  • 2015年12月27日 18:02
  • 153

Android开发------------杂记

ListView: 在ListView的布局文件中加上 android:layout_height="fill_parent" 或 android:layout_height="0dip"(指定高度)...
  • wonghoman
  • wonghoman
  • 2014年04月05日 21:21
  • 1610

《写真一瞬间》读书杂记

1.1    构图 正面,最大程度体现拍摄对象轮廓; 斜俯视,体现对象整体; 正上方,体现趣味性; 斜上方,强调细节; 斜面,纵深和立体感; 下方,显示空间开阔感; 留白,少强调对象存在...
  • ahpo
  • ahpo
  • 2017年02月22日 15:16
  • 150

[杂记] 写在结束和开始

从2007年底进入MTK到现在,不知不觉已经过去了7年多的时光,而明天即将结束在MTK的职业生涯。 在MTK的7年中很辛苦但也有很多的收获,更难得的是基本上一直能够focus在audio的领域,从最初...
  • sszhouplus
  • sszhouplus
  • 2015年01月08日 20:53
  • 423

python中比较pythonic的地方

变量交换 >>> a, b = b, a 循环遍历区间元素 >>>for i in range(10): ... print (i)返回的是生成器对象,生成器比列表更加节省内存 带索引位置的循环...
  • u011404495
  • u011404495
  • 2017年03月03日 15:58
  • 366

Android开发之杂记(2)

1,Android FrameLayout的android:foreground属性可以设置单击时的前景色
  • MiniMicall
  • MiniMicall
  • 2014年09月16日 11:29
  • 2359

android开发杂记一

填坑一: viewpager+fragment(3个fragment),其中有一个fragment内有listview,listeview内含有播放视频控件时,进入到界面会闪屏一次。 原因是:list...
  • lvuchenliu
  • lvuchenliu
  • 2017年01月07日 17:25
  • 134

Android开发之杂记(3)

1,标签 标签闪亮登场了。当LayoutInflater遇到这个标签时,它会跳过它,并将内的元素添加到的父元素里。迷惑了吗?让我们用来替换FrameLayout,并重写之前的XML布局:     ...
  • MiniMicall
  • MiniMicall
  • 2014年09月22日 12:15
  • 1132

关于Android开发杂记

常用的方法封装成工具类 activity,fragment,adapter等这些常用的东西都写个基类用来继承,基类里把可能反复调用的对象初始化 善于运用泛型 轻量的数据,对象等可以保存在applica...
  • Gaara_lee
  • Gaara_lee
  • 2015年03月20日 09:48
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android开发杂记
举报原因:
原因补充:

(最多只允许输入30个字)