安卓:报警的更新的更多小工具 [英] Android : Alarm for update more widget

查看:199
本文介绍了安卓:报警的更新的更多小工具的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用AlarmManager为每秒更新一次一个小部件,但是当加入更多小工具只有最后一个小部件更新。我不understend为什么...

这是code ...

 公共类插件扩展AppWidgetProvider {    @覆盖
    公共无效的onUpdate(上下文的背景下,AppWidgetManager appWidgetManager,INT [] appWidgetIds){
        共享preferences preference = context.getShared preferences(MY_ preFERENCE,Context.MODE_PRIVATE);
        意向意图=新意图(背景下,vampireServiceWidget.class);
        context.startService(意向);
        的for(int i = 0; I< appWidgetIds.length;我++){
            如果(preference.getLong(倒计时,0)!= 0){
                //单方面金正日倒计时
                在意向=新意图()的setAction(it.android.dev.thevampirediaries.UPDATE_COUNTDOWN);
                in.putExtra(id_widget,appWidgetIds [I]);
                in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                的PendingIntent圆周率= PendingIntent.getBroadcast(上下文,0,在,PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager报警=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
                alarm.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),1000,PI);                    }}}

到广播这种code

  AppWidgetManager经理= AppWidgetManager.getInstance(背景);
            RemoteViews远程视窗=新的RemoteViews(context.getPackageName(),R.layout.widgett);
         thisWidget = intent.getIntExtra(id_widget,0)
            SimpleTimeFormat TF =新SimpleTimeFormat($ $ DD:$ $ HH:$ $ MM:SS $ $);
            字符串risultato = tf.format(countdown_data_fine - 新的Date()的getTime()); //为arg0节奏
            remoteView.setTextViewText(R.id.textView1,titolo_puntata);
            remoteView.setTextViewText(R.id.textView2,risultato);
            manager.updateAppWidget(thisWidget,远程视窗)


解决方案

注释掉循环和不发送部件编号。使用<一个href=\"http://developer.android.com/reference/android/appwidget/AppWidgetManager.html#updateAppWidget%28android.content.ComponentName,%20android.widget.RemoteViews%29\"相对=nofollow>公共无效updateAppWidget(组件名供应商,RemoteViews意见)来更新部件。

试试这个

 公共类插件扩展AppWidgetProvider {    @覆盖
    公共无效的onUpdate(上下文的背景下,AppWidgetManager appWidgetManager,INT [] appWidgetIds){
        共享preferences preference = context.getShared preferences(MY_ preFERENCE,Context.MODE_PRIVATE);
        意向意图=新意图(背景下,vampireServiceWidget.class);
        context.startService(意向);
        //的for(int i = 0; I&LT; appWidgetIds.length;我++){
            如果(preference.getLong(倒计时,0)!= 0){
                //单方面金正日倒计时
                在意向=新意图()的setAction(it.android.dev.thevampirediaries.UPDATE_COUNTDOWN);
                in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                的PendingIntent圆周率= PendingIntent.getBroadcast(上下文,0,在,PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager报警=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
                alarm.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),1000,PI);             }
       }

//}

=============================================== =

  AppWidgetManager经理= AppWidgetManager.getInstance(背景);
                RemoteViews远程视窗=新的RemoteViews(context.getPackageName(),R.layout.widgett);
组件名thisWidget =新的组件名(背景下,widget.class);
    SimpleTimeFormat TF =新SimpleTimeFormat($ $ DD:$ $ HH:$ $ MM:SS $ $);
                字符串risultato = tf.format(countdown_data_fine - 新的Date()的getTime());
                remoteView.setTextViewText(R.id.textView1,titolo_puntata);
                remoteView.setTextViewText(R.id.textView2,risultato);
                manager.updateAppWidget(thisWidget,远程视窗)

I use an AlarmManager for update every second a widget but when add more widget only the last widget is updated. I don't understend why...

This is the code...

public class widget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
        SharedPreferences preference = context.getSharedPreferences("MY_PREFERENCE", Context.MODE_PRIVATE);
        Intent intent = new Intent(context,vampireServiceWidget.class);
        context.startService(intent);
        for(int i=0; i<appWidgetIds.length;i++){        
            if(preference.getLong("countdown", 0)!=0){
                //Parte il countdown
                Intent in = new Intent().setAction("it.android.dev.thevampirediaries.UPDATE_COUNTDOWN");
                in.putExtra("id_widget", appWidgetIds[i]);
                in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent pi = PendingIntent.getBroadcast(context, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
                alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 1000, pi); 

                    }       }

}

into the broadcast this code

    AppWidgetManager manager = AppWidgetManager.getInstance(context);
            RemoteViews remoteView = new RemoteViews(context.getPackageName(),R.layout.widgett);
         thisWidget=intent.getIntExtra("id_widget", 0)
            SimpleTimeFormat tf = new SimpleTimeFormat("$dd$ : $HH$: $mm$: $ss$");    
            String risultato = tf.format(countdown_data_fine - new Date().getTime()); // arg0 tempo
            remoteView.setTextViewText(R.id.textView1, titolo_puntata);
            remoteView.setTextViewText(R.id.textView2, risultato);
            manager.updateAppWidget(thisWidget, remoteView);

解决方案

Comment out the for loop and do not send the widget ids. Use public void updateAppWidget (ComponentName provider, RemoteViews views) to update the widget.

Try this

public class widget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
        SharedPreferences preference = context.getSharedPreferences("MY_PREFERENCE", Context.MODE_PRIVATE);
        Intent intent = new Intent(context,vampireServiceWidget.class);
        context.startService(intent);
        //for(int i=0; i<appWidgetIds.length;i++){        
            if(preference.getLong("countdown", 0)!=0){
                //Parte il countdown
                Intent in = new   Intent().setAction("it.android.dev.thevampirediaries.UPDATE_COUNTDOWN");
                in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                PendingIntent pi = PendingIntent.getBroadcast(context, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
                alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 1000, pi); 

             }     
       }

// }

================================================

    AppWidgetManager manager = AppWidgetManager.getInstance(context);
                RemoteViews remoteView = new RemoteViews(context.getPackageName(),R.layout.widgett);
ComponentName thisWidget = new ComponentName(context, widget.class);
    SimpleTimeFormat tf = new SimpleTimeFormat("$dd$ : $HH$: $mm$: $ss$");    
                String risultato = tf.format(countdown_data_fine - new Date().getTime());
                remoteView.setTextViewText(R.id.textView1, titolo_puntata);
                remoteView.setTextViewText(R.id.textView2, risultato);
                manager.updateAppWidget(thisWidget, remoteView);

这篇关于安卓:报警的更新的更多小工具的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆