2

我想为现有的 android 应用程序开发一个小部件。

我想要的唯一功能是显示我从应用程序中获得的变量。我开发了一个简单的函数来从中获取变量,但我不知道在应用程序关闭时如何更新它。

或者我必须编写一个服务来获取这些变量?

package hkcsl.tabbedactivealarm;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;

public class AppWidgetExample extends AppWidgetProvider {   
@Override
public void onReceive(Context context, Intent intent) {

  super.onReceive(context, intent);     
  RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.helloworld);
  String value1 = intent.getStringExtra("Value"); 
  views.setTextViewText(R.id.text, value1);
  AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
  appWidgetManager.updateAppWidget(new ComponentName(context, AppWidgetExample.class), views);
   }
  }
4

1 回答 1

1

如果我理解这个问题 -

是的,这是可能的,但我相信更新间隔必须低于每分钟一次。有关简单教程,请参阅本指南:

http://www.vogella.com/articles/AndroidWidgets/article.html#simplewidget

是的,您的应用程序需要一个在您的应用程序关闭时运行的进程。所以后台服务或 AsyncTask 或 Thread 会做。后台服务是您的最佳选择

编辑

好吧,我想我现在更好了。使用上面的相同链接,阅读第 4 节。

`appWidgetManager.updateAppWidget(widgetId, remoteViews);`

您只启动 1 个服务,该服务负责更新值。如果您希望在用户退出您的应用程序时发生一些特别的事情,您可以覆盖onDestroy()?

编辑 2

在 XML 中使用类似的东西:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider 
      xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/YOUR_LAYOUT"
    android:minHeight="72dp"
    android:minWidth="300dp"
    android:updatePeriodMillis="300000" >

</appwidget-provider> 

注意updatePeriodMillis=300000

这取自上面那篇文章链接的第 3 节

于 2012-11-16T04:25:54.027 回答