Ati*_*ska 8 android android-widget
我有一个带有简单按钮实现的小部件,每当我们点击一个按钮时,它就会翻转一组给定的图像.现在,如果我想在没有点击按钮的情况下每5秒翻一次,我该怎么办?
Cyr*_*oux 10
首先,我强烈建议您不要每5秒更新一次小部件.它会立刻杀死你的电池.
您可以在appwidget-provider中使用android:updatePeriodMillis属性.在Android开发人员网站上
查看添加AppWidgetProviderInfo元数据.
问题是,为了节省电池,你不能设置30分钟(1800000毫秒)以下的时间.
设置所需的更新周期后,您只需在AppWidgetProvider的onReceive()方法中定义行为即可.为此,您必须捕获ACTION_APPWIDGET_UPDATE事件.
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (ACTION_APPWIDGET_UPDATE.equals(action)) {
// Update your widget here.
}
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想每5秒执行一次任务,你可以使用Timer和TimerTask类:
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
// send a broadcast to the widget.
}
});
}
};
timer.scheduleAtFixedRate(task, 0, 5000); // Executes the task every 5 seconds.
Run Code Online (Sandbox Code Playgroud)
使用 AlarmManager 触发警报,向您的接收器发送更新意图。
这是一个很好的链接,给出了一个例子。
http://www.parallelrealities.co.uk/2011/09/using-alarmmanager-for-updating-android.html
注:但是,5秒,实在是太快了。它很快就会耗尽你的电池,具体取决于你在后台可能做的其他事情。请考虑降低更新频率。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
imageView.setImageBitmap(bitmap);
}
});
}
}, 5000, 5000);
Run Code Online (Sandbox Code Playgroud)
第一次更改将在 5 秒后发生。
| 归档时间: |
|
| 查看次数: |
7672 次 |
| 最近记录: |