android 清单文件有啥作用? widget相对位置的完成在activity的哪个生命周期阶段实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 清单文件有啥作用? widget相对位置的完成在activity的哪个生命周期阶段实现?相关的知识,希望对你有一定的参考价值。

清单文件即androidManifest文件,AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)。

AppWidget 就是HomeScreen上显示的小部件,提供直观的交互操作。通过在HomeScreen中长按,在弹出的对话框中选择Widget部件来进行创建,长按部件后并拖动到垃圾箱里进行删除。同一个Widget部件可以同时创建多个。

AppWidget的实现主要涉及到以下类:
AppWidgetProvider
RemoteViews
AppWidgetManager

1. 首先需要提供一个定义了Widget界面布局的XML文件(位于res/layout/..),需要注意的是使用的组件必须是RemoteViews所支持的,目前原生API中支持的组件如下:
FrameLayout
LinearLayout
RelativeLayout

AnalogClock
Button
Chronmeter
ImageButton
ImageView
ProgressBar
TextView

*如果使用了除此之外的组件,则在Widget创建时会导致android.view.InflateExceptionn异常。

2. 然后需要提供一个xml文件来定义Widget的基本属性,放置到res/xml/..目录下。
如果使用的是Eclipse可按如下操作:
1) 在res/目录下创建xml/目录
2)创建xml文件(名字可任意),选择类型为AppWidgetProvider
3)在弹出的便捷界面进行参数设置
主要设置的参数如下:
minWidth: 定义Wdiget组件的宽度
minHeight: 定义Wdiget组件的高度
updatePeriodMillis: 更新的时间周期
initialLayout: Widget的布局文件
configure: 如果需要在启动前先启动一个Activity进行设置,在这里给出Activity的完整类名(后面会说到,与一般Activity的实现有些许差别)

3. xml都定义好后,接下来就是创建一个继承自AppWidgetProvider的子类,AppWidgetProvider实际上就是一个BroadcastReceiver,里面提供了以下函数:
onReceive(Context, Intent)
onUpdate(Context , AppWidgetManager, int[] appWidgetIds)
onEnabled(Context)
onDeleted(Context, int[] appWidgetIds)
onDisabled(Context)
可通过重写以上函数来监听Widget状态的变化并进行相应的处理。

4. 最后,更新AndroidManifest.xml。
AppWidgetProvider对应一个receiver属性:
Xml代码
<receiver android:name="MyWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/></intent-filter>
<meta-data android:resource="@xml/widget_property" android:name="android.appwidget.provider"/>
</receiver>

5. 提供Configuration Activity
Configuration Activity是一个在Widget启动前先启动的Activity,方便用户对Widget的属性进行设置。

需要注意的是,如果设置了Configure属性,则必须在指定的Activity中进行如下处理:
1.在onCreate中setContentView()函数前添加setResult(RESULT_CANCLE) ,这样如果在Activity初始化完成前按下了BACK按键,则Widget不会启动;
2.在setContentView()函数之后(不一定要在onCreate中,在Activity退出前即可),添加如下设置以指定需要启动的Widget:
参考技术A android清单是用来注册一些事件,即主界面、其他界面以及一些权限问题的注册。权限问题主要有:手机号码、手机识别码、来/去电号码、收发短信和彩信等权限。widget是对手机、电脑界面程序的图标进行小图标显示,至于它与activity的生命周期的关系,不清楚。感觉没什么关系吧?! 参考技术B 这个问题太过于专业了!百度里不会有人知道的,建议去国外论坛提问,呵呵!!!

以上是关于android 清单文件有啥作用? widget相对位置的完成在activity的哪个生命周期阶段实现?的主要内容,如果未能解决你的问题,请参考以下文章

清单中有啥权限可以将应用程序放入省电的android中

Android之Weiget控件初解

Android 中的 LayoutInflater 有啥作用?

android清单文件在哪里打开

报价单和清单有啥区别?

android studio创建的工程目录下的gradlew文件有啥作用