我正在编写一个小部件,每次我接到未接来电时它都必须自我更新。为此,在 AppWidgetProvider 类的 onEnabled 方法中,我注册了一个 ContentObserver。代码如下:
@Override
public void onEnabled(Context context){
this.mcco = new MissedCallsContentObserver(context);
context.getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, this.mcco);
}
MissedCallsContentObserver 类的代码如下:
package bembibre.coolstar.windowsmobilewidget.backend;
import bembibre.coolstar.windowsmobilewidget.backend.textproviders.CallsProvider;
import android.content.Context;
import android.database.ContentObserver;
public class MissedCallsContentObserver extends ContentObserver
{
Context context;
public MissedCallsContentObserver(Context context)
{
super(null);
this.context = context;
}
@Override
public void onChange(boolean selfChange)
{
try{
Thread.sleep(1000);
}
catch(Exception e){
}
new CallsProvider(this.context).setData();
}
}
每次电话收到未接来电时,都会自动调用 onChange 方法。这适用于我测试过的许多设备。但我也在 LG L5 上对其进行了测试。这是唯一不起作用的设备。为什么?三星设备和 LG 设备中的 ContentObservers 不一样?在 LG 中,永远不会调用 onChange 方法。我还想问一个关于我的 Eclipse 调试器的问题。使用我的三星手机,它运行良好,但使用之前提到的索尼 Xperia 和 LG,它会在需要时断开连接。如果什么都不做,调试器会突然断开连接。我的 USB 线是完美的。还有我的电脑和手机的USB端口。为什么调试器断开连接?logcat 中不会抛出异常或错误消息。我不知道是什么问题。