android常见问题

1、广播接收器中启动Activity,需要在intent中添加FLAG_ACTIVITY_NEW_TASK

/**
 * Demo描述:
 * 在BroadcastReceiver中启动Activity的问题
 *
 * 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity
 * Intent intent=new Intent(context,AnotherActivity.class);
 * context.startActivity(intent);
 * 可捕获异常信息:
 * android.util.AndroidRuntimeException:
 * Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.
 * Is this really what you want?
 * 它说明:在Activity的context(上下文环境)之外调用startActivity()方法时
 * 需要给Intent设置一个flag:FLAG_ACTIVITY_NEW_TASK
 *
 * 所以在BroadcastReceiver的onReceive()方法中启动Activity应写为:
 * Intent intent=new Intent(context,AnotherActivity.class);
 * intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 * context.startActivity(intent);
 *
 *
 * 之前描述了问题的现象和解决办法,现在试着解释一下原因:
 * 1 在普通情况下,必须要有前一个Activity的Context,才能启动后一个Activity
 * 2 但是在BroadcastReceiver里面是没有Activity的Context的
 * 3 对于startActivity()方法,源码中有这么一段描述:
 *   Note that if this method is being called from outside of an
 *   {@link android.app.Activity} Context, then the Intent must include
 *   the {@link Intent#FLAG_ACTIVITY_NEW_TASK} launch flag.  This is because,
 *   without being started from an existing Activity, there is no existing
 *   task in which to place the new activity and thus it needs to be placed
 *   in its own separate task.
 *   说白了就是如果不加这个flag就没有一个Task来存放新启动的Activity.
 *
 * 4 其实该flag和设置Activity的LaunchMode为SingleTask的效果是一样的
 *
 *
 * 如有更加深入的理解,请指点,多谢
 *
 */
该flag和设置Activity的LaunchMode为SingleTask的效果是一样的,这里理解其实并不是非常准确
时间: 2024-11-05 17:26:15

android常见问题的相关文章

Android 常见问题收集 (持续更新)

gridview中设置item的高度. 一.BaseAdapter中的getView中设置 AbsListView.LayoutParams param = new AbsListView.LayoutParams( android.view.ViewGroup.LayoutParams.MATCH_PARENT, parent.getWidth()/2+DpPx.dip2px(context,20));//-20 10spacing 5padding + 40 textview.height

Android常见问题总结(三)

上一篇博客传送门:Android常见问题总结(二) 11. Android的数据存储形式 在Android中的数据存储形式主要有以下几种: SharedPreferrences SharedPreferrences主要用于存储一些少量的简单的应用程序配置信息.SharedPreferrences以明文键值对的形式把数据存储在一个xml文件上,该文件位于/data/data/<package name>/shared_prefs目录下.因此,SharedPreferrences只适合用于存储一些

Cocos2d-x移植Android 常见问题处理办法

1.函数.变量出现"could not be resolved "问题 出现此问题一般是没有找到cocos2d-x声明的头文件,在eclipse将cocos2d的头文件目录引入,包括工程目录.platform/android 在hellocpp/main.cpp函数加入头文件 #include "AppDelegate.h" #include "cocos2d.h" #include "CCEventType.h" #incl

Android常见问题总结(四)

上一篇博客传送门:Android常见问题总结(三) 16. 动画有哪几类,各有什么特点 如今Android的动画主要有三种,分别是:逐帧(Frame)动画,补间(Tween)动画,属性(Property)动画 逐帧(Frame)动画 逐帧动画是最容易理解的动画,它要求我们把动画过程的每张静态图片都准备好,然后依次显示,利用人眼"视觉暂留"的原理形成动画效果. 例子:肥波跳舞? 素材准备(共27帧): fat_po.xml: <?xml version="1.0"

Android常见问题2:Resources$NotFoundException(1)

今天上午做一个作业时,偶然出现的一个bug,虽然当时很快修改通过了,但当时由于忙着赶完作业,也没有仔细思考这个bug出现的原因,到晚上终于有时间做了一个小Demo测试一下. Demo很简单,需求是:MainActivity界面只有一个按钮,当点击按钮时出现对话框,对话框有输入框,输入框默认是有文本的. 效果图: 源码如下: 1 package com.my.day24_my_testdialog; 2 3 import android.os.Bundle; 4 import android.vi

Android常见问题——找不到HttpClient和okHttp的包

今天再用Android Studio进行网络编程的时候遇到了一个问题,就是怎么也找不到HttpClient的包,上网搜了一下也没什么结果,但最后偶然解决问题,下面总结了一下方法: 首先打开File->Project Structure,然后到Modules选中你要导入包的moudle 然后导入上图中的最下面的两个包(第一个为okHttp的包,第二个是HttpClient的包)就可以了

Android常见问题及开发经验总结(三)

1.空格占位调样式问题 数字.字母和汉字混排占位问题:将数字和字母全角化.由于现在大多数情况下我们的输入都是半角,所以 字母和数字的占位无法确定,但是一旦全角化之后,数字.字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题. 2.稍复杂的布局用RelativeLayout 布局调试起来更加 方便简洁 3.等分布局的时候 使用android:layout_weight或者TableLayout制作等分布局 4.英文文档排版:textview自动换行时要保持单词的完整性,解决方

Xamarin Android 常见问题解决方案汇总

出现如下提示,错误: 找不到或无法加载主类 com.sun.tools.javac.MainMSB6006: 或 閿欒: 绋嬪簭鍖卆ndroid.support.v4.view.ViewPager涓嶅瓨鍦? 删掉bin,obj文件夹重新生成 还是没有效果的话参照这里http://blog.csdn.net/cctvcqupt/article/details/46636809 Your emulator is out of date, please update by launching And

android常见问题(一)

一:文本的颜色选择器: 在res目录下面创建color文件夹,在color文件夹下面创建font_style_colors.xml文件<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_selected="t