我这里有一个奇怪的人…
我的摩托罗拉i1配备了运行Android 1.5的Nextel
我有一个AndroID小部件.
当我开始运行更新此小部件的服务时,我看到了另一个小部件的图像(启动DC Contact)
它在我的窗口小部件位置显示此图像,但是当完成对窗口小部件的“更新”时,它将替换为窗口小部件的布局.
好像有小部件图像的缓存一样,它显示了那里的内容,直到小部件的更新完成为止.
如果我的更新花费很长时间,则用户可以在2-3秒内看到此奇怪的图像.
public voID onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIDs) { Log.d(TAG, "Enter onUpdate"); final int N = appWidgetIDs.length; for (int i = 0; i < N; i++) { int WidgetID = appWidgetIDs[i]; RemoteVIEws vIEws = new RemoteVIEws(context.getPackagename(), R.layout.Widget_initial_layout); Intent intent = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); vIEws.setonClickPendingIntent(R.ID.WidgetLayout, pendingIntent); vIEws.setTextVIEwText(R.ID.NEWCountTextVIEw, Integer.toString(NEWC)); vIEws.setTextVIEwText(R.ID.ACKCountTextVIEw, Integer.toString(ACKC)); vIEws.setTextVIEwText(R.ID.PKUCountTextVIEw, Integer.toString(PKUC)); vIEws.setTextVIEwText(R.ID.PODCountTextVIEw, Integer.toString(PODC)); if (errorMessage.contentEquals("")) { errorMessage = (new Date()).toString(); vIEws.setTextcolor(R.ID.LastUpdatedTextVIEw, color.BLACK); } else { vIEws.setTextcolor(R.ID.LastUpdatedTextVIEw, color.RED); } vIEws.setTextVIEwText(R.ID.LastUpdatedTextVIEw, errorMessage); appWidgetManager.updateAppWidget(WidgetID, vIEws); } Log.d(TAG, "Exit onUpdate"); }public voID onReceive(Context context, Intent intent) { Log.d(TAG, "Enter onReceive"); String action = intent.getAction(); if (action.contentEquals("androID.appWidget.action.APPWidget_UPDATE")) { Bundle extras = intent.getExtras(); if (extras != null) { NEWC = extras.getInt("NEWCOUNT"); ACKC = extras.getInt("ACKCOUNT"); PKUC = extras.getInt("PKUCOUNT"); PODC = extras.getInt("PODCOUNT"); errorMessage = extras.getString("ERRORMESSAGE"); } }
super.onReceive(上下文,意图);
Log.d(TAG,“ Exit onReceive”);
}
这是布局
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/WidgetLayout" androID:layout_height="wrap_content" androID:layout_wIDth="wrap_content" androID:gravity="top" androID:orIEntation="vertical" androID:background="@drawable/bg" > <TextVIEw androID:text="ORDERS" androID:ID="@+ID/TextVIEw01" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="top|center" androID:textcolor="#ffff00" androID:textStyle="bold" /> <TextVIEw androID:text="" androID:ID="@+ID/TextVIEw01" androID:layout_wIDth="fill_parent" androID:layout_height="6dip" androID:gravity="top|center" androID:background="#0000ff" /> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/linearLayout02" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" androID:gravity="top|center" androID:orIEntation="horizontal" > <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/CountslinearLayout" androID:layout_height="fill_parent" androID:layout_wIDth="wrap_content" androID:gravity="top" androID:orIEntation="vertical" > <TextVIEw androID:text="NEW" androID:ID="@+ID/TextVIEw11" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> <TextVIEw androID:text="" androID:ID="@+ID/NEWCountTextVIEw" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> </linearLayout> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/linearLayout04" androID:layout_height="fill_parent" androID:layout_wIDth="wrap_content" androID:gravity="top" androID:orIEntation="vertical" > <TextVIEw androID:text="ACK" androID:ID="@+ID/TextVIEw21" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> <TextVIEw androID:text="" androID:ID="@+ID/ACKCountTextVIEw" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> </linearLayout> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/linearLayout05" androID:layout_height="fill_parent" androID:layout_wIDth="wrap_content" androID:gravity="top" androID:orIEntation="vertical" > <TextVIEw androID:text="PKU" androID:ID="@+ID/TextVIEw31" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> <TextVIEw androID:text="" androID:ID="@+ID/PKUCountTextVIEw" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> </linearLayout> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/linearLayout06" androID:layout_height="fill_parent" androID:layout_wIDth="wrap_content" androID:gravity="top" androID:orIEntation="vertical" > <TextVIEw androID:text="POD" androID:ID="@+ID/TextVIEw41" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> <TextVIEw androID:text="" androID:ID="@+ID/PODCountTextVIEw" androID:layout_wIDth="75dip" androID:layout_height="wrap_content" androID:textSize="25dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> </linearLayout> </linearLayout> <TextVIEw androID:text="" androID:ID="@+ID/TextVIEw01" androID:layout_wIDth="fill_parent" androID:layout_height="6dip" androID:gravity="bottom|center" androID:background="#0000ff" /> <TextVIEw androID:text="" androID:ID="@+ID/LastUpdatedTextVIEw" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:textSize="15dip" androID:gravity="center" androID:textcolor="#000000" androID:textStyle="bold" /> </linearLayout>
你有没有看到这样的东西?
谢谢
解决方法:
我在小部件中遇到了与您描述的完全相同的问题,并进行了大量搜索以寻找解决方案,但找不到任何解决方案.我最终所做的是某种变通方法,在我看来,这种变通方法很好.我所做的是以下 *** 作,而不是直接从onUpdate()方法更新小部件,而是启动了一个处理更新的服务,然后杀死了自己.这样就可以在模拟器上以及在更新过程中使小部件卡住的设备上解决该问题.
这是一个示例代码:
appwidgetprovider:
@OverrIDepublic voID onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIDs) { context.startService(new Intent(context, WidgetService.class));}
服务:
@OverrIDepublic voID onStart(Intent intent, int startID) { started(intent);}@OverrIDepublic int onStartCommand(Intent intent, int flags, int startID) { started(intent); return START_STICKY;}private voID started(Intent intent) { //update here the Widgets Context context = getApplicationContext(); updateWidgets(context); stopSelf();//killing the service}private voID updateWidgets(Context context) { AppWidgetManager appmanager = AppWidgetManager.getInstance(context); Componentname cmpname = new Componentname(context, WidgetClass); int[] WidgetIDs = appmanager.getAppWidgetIDs(cmpname); RemoteVIEws rVIEw = new RemoteVIEws(context.getPackagename(), layoutID); for (int wID : WidgetIDs) { //all updates here rVIEw.setTextVIEwText(tvID, desc); appmanager.updateAppWidget(wID, rVIEw); }}
请注意,确定此替代方法为什么可以解决问题,但好处是它确实
希望这可以帮助
以上是内存溢出为你收集整理的Android Widget在更新期间显示奇怪的图像全部内容,希望文章能够帮你解决Android Widget在更新期间显示奇怪的图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)