Met*_*urf 12 android android-widget android-manifest android-preferences sharedpreferences
我有一个Android Widget,它使用Web服务来检索和显示小部件上的数据.窗口小部件具有配置活动extends PreferenceActivity.安装窗口小部件后,配置活动就会立即启动,这是此窗口小部件的所需行为.
问题是,无论何时将小部件添加到主屏幕,小部件都会在配置活动开始/完成之前尝试更新自身,这可能会导致长时间延迟(几秒钟).配置活动应在窗口小部件在添加新窗口小部件时尝试自行更新之前发生.
以下是添加窗口小部件时我在LogCat中看到的事件序列:
发生的事情是,添加窗口小部件后,服务将在显示配置视图之前启动.
的Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xxx.xxxwidget"
android:versionCode="1"
android:versionName="@string/app_version" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="xxxWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
<activity android:name="xxxWidgetConfigure" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="xxxWidgetService" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
问题
有没有办法在系统尝试将小部件添加到主屏幕之前强制显示配置活动?
Spi*_*iff 18
来自android文档:http: //developer.android.com/guide/topics/appwidgets/index.html#Configuring
创建App Widget时不会调用onUpdate()方法(系统在启动配置Activity时不会发送ACTION_APPWIDGET_UPDATE广播).首次创建App Widget时,配置Activity负责从AppWidgetManager请求更新.但是,将为后续更新调用onUpdate() - 它仅在第一次被跳过.
但是,这似乎不正确!
我所做的是向SharedPreferences添加一个布尔值,告诉我这个widgetId是否已通过配置.如果没有跳过此更新.在AppWidgetProvider类的onUpdate方法中实现它.
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |