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

私が質問を理解したら -

はい、可能ですが、更新間隔は 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 に答える