Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ContentObserver不仅在LG设备中调用_Android_Contentobserver_Appwidgetprovider_Lg - Fatal编程技术网

Android ContentObserver不仅在LG设备中调用

Android ContentObserver不仅在LG设备中调用,android,contentobserver,appwidgetprovider,lg,Android,Contentobserver,Appwidgetprovider,Lg,我正在编写一个小部件,每当我接到未接来电时,它都必须自我更新。为此,在AppWidgetProvider类的OneEnabled方法中,我注册了一个ContentObserver。代码如下: @Override public void onEnabled(Context context){ this.mcco = new MissedCallsContentObserver(context); context.getContentResolver().registerConten

我正在编写一个小部件,每当我接到未接来电时,它都必须自我更新。为此,在AppWidgetProvider类的OneEnabled方法中,我注册了一个ContentObserver。代码如下:

@Override
public void onEnabled(Context context){
    this.mcco = new MissedCallsContentObserver(context);
    context.getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, this.mcco);
}
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();
    }
}
MissedCallsContentObserver类的代码如下:

@Override
public void onEnabled(Context context){
    this.mcco = new MissedCallsContentObserver(context);
    context.getContentResolver().registerContentObserver(Calls.CONTENT_URI, true, this.mcco);
}
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上进行了测试。这是唯一一个不能工作的设备。为什么?Samgung设备中的内容观察者与LG设备中的内容观察者不一样吗?在LG中,永远不会调用onChange方法。
我还想问一个关于eclipse调试器的问题。用我的三星手机,它工作得很好,但用索尼Xperia和前面提到的LG,它可以在需要的时候断开连接。如果什么也不做,调试器会突然断开连接。我的USB线是完美的。还有我的电脑和手机的USB端口。为什么调试器断开连接?logcat中不会抛出异常或错误消息。我不知道是什么问题。

我所有的
ContentObserver
都在类
AppWidgetProvider
中注册和注销。我读到,这是不安全的,例如在一些LG手机,它似乎不工作。我所做的是一个粘性
服务
(在重写方法
onStartCommand()
的末尾,您必须返回常量
START\u sticky
)。然后,在服务中,我注册了
ContentObserver
s,现在它可以在所有手机上使用。似乎粘性服务永远存在。如果没有,我的应用程序将停止工作,除非我再次创建服务


创建服务时,我注册
ContentObserver
s,当它被销毁时,我取消注册它们。当您不再使用时,忘记注销
ContentObserver
似乎是很危险的。

三星和LG对框架代码进行了大量修改,您是否检查了有关此问题的LG错误报告?是的,我检查了。我什么也没找到。ContentObserver是一种非常基本的Android机制。我不明白制造商怎么能改变这一点。这意味着在LG手机中,很多应用程序都无法工作,比如我的手机。很多应用程序都需要ContentObserver。问题的原因可能是我调用了ContentObserver构造函数,并将null传递给它,而不是处理程序实例?这是我在代码中看到的唯一奇怪的事情。contentobserver与数据分离,是contentprovider在任何contentresolver上调用notifychange(在注册了观察者之后),LG可能已经修改了提供程序以不发送notifychange调用,因此您在contentobserver中没有收到任何内容。(看起来很奇怪)你至少发布过一次应用程序吗?从未启动过的应用程序不会收到隐式意图。