Pau*_*aul 1 android android-widget
我一直在关注这个教程,试图为android制作一个非常简单的时钟小部件.我能够创建小部件,但它似乎没有更新.我发现这很奇怪,因为我的代码似乎与android dev博客的教程基本相同.
当我将小部件添加到主屏幕(Android 2.2模拟器)时,我在logCat中收到以下消息:
I/ActivityManager( 68): Starting activity: Intent { act=android.appwidget.action.APPWIDGET_PICK cmp=com.android.settings/.AppWidgetPickActivity (has extras) }
W/InputManagerService( 68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44fbaf40
I/AppWidgetPickActivity( 135): EXTRA_CUSTOM_INFO not present.
I/ActivityManager( 68): Displayed activity com.android.settings/.AppWidgetPickActivity: 1181 ms (total 1181 ms)
W/ActivityManager( 68): Unable to launch app com.levold.customClockWidget/10036 for broadcast Intent { act=android.appwidget.action.APPWIDGET_ENABLED cmp=com.levold.customClockWidget/.ClockWidget }: process is bad
W/ActivityManager( 68): finishReceiver called but none active
W/ActivityManager( 68): Unable to launch app com.levold.customClockWidget/10036 for broadcast Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.levold.customClockWidget/.ClockWidget (has extras) }: process is bad
W/ActivityManager( 68): finishReceiver called but none active
W/InputManagerService( 68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44fe1c50
Run Code Online (Sandbox Code Playgroud)
这些线条Unable to launch app com.levold.customClockWidget/10036 for broadcast Intent { act=android.appwidget.action.APPWIDGET_ENABLED cmp=com.levold.customClockWidget/.ClockWidget }: process is bad似乎是最相关的,但我找不到有关它的更多信息.
大部分代码如下.如果有人能提供帮助,那将是非常好的,我现在几乎陷入困境......
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.levold.customClockWidget"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".ClockWidget" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/custom_clock_widget" />
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
XML/custom_clock_widget.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="146dip"
android:minHeight="72dip"
android:updatePeriodMillis="1000"
android:initialLayout="@layout/main"
/>
Run Code Online (Sandbox Code Playgroud)
SRC/COM/levold/customClockWidget/ClockWidget.java
package com.levold.customClockWidget;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
public class ClockWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Toast.makeText(context,"Updating widget...", Toast.LENGTH_SHORT).show();
Log.i("clockWidget","Updating widget...");
}
Run Code Online (Sandbox Code Playgroud)
你有什么看起来很好的袖口.我不确定你是否可以Toast从BroadcastReceiver那样做.更重要的是,请记住,它只会每半小时更新一次,因为android:updatePeriodMillis不会接受低于半小时的值.
应用小部件并不是每秒都要更新.更新应用小部件涉及进程间通信调用,这并不便宜.
主屏幕时钟最好由主屏幕应用程序实现,而不是作为app小部件实现.
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |