kitkat上的android应用程序问题

kitkat上的android应用程序问题,android,widget,android-4.4-kitkat,Android,Widget,Android 4.4 Kitkat,我创建了小部件,它在所有android操作系统上都能正常工作,但在kitkat上,当我第一次将小部件移动到主屏幕时,我的自定义数据出现,然后在一秒钟后突然消失。我需要你的帮助 研究 1:我们使用onEnable函数处理首次在屏幕上显示小部件的情况。 2:OnEnable在kitkat上工作准确,但一秒钟后就会丢失数据 我的代码 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,

我创建了小部件,它在所有android操作系统上都能正常工作,但在kitkat上,当我第一次将小部件移动到主屏幕时,我的自定义数据出现,然后在一秒钟后突然消失。我需要你的帮助

研究 1:我们使用onEnable函数处理首次在屏幕上显示小部件的情况。 2:OnEnable在kitkat上工作准确,但一秒钟后就会丢失数据

我的代码

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                 int[] appWidgetIds) 
{
// Get all ids
 ComponentName thisWidget = new ComponentName(context,
        MyWidgetProvider.class);
int[] allWidgetIds =  appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {

    // create some random data
    int number = (new Random().nextInt(100));

    remoteViews = new RemoteViews(context.getPackageName(),
            R.layout.widget_layout);

    appwidget=appWidgetManager;
    // Set the text

    remoteViews.setOnClickPendingIntent(R.id.imagechecked,
            getPendingSelfIntent(context, MyOnClick));


    Intent intent = new Intent(context, MyWidgetProvider.class);
    intent.putExtra(appwidget.EXTRA_APPWIDGET_ID, appWidgetIds);
    intent.setAction(appwidget.ACTION_APPWIDGET_UPDATE);
    intent.setAction(SHOW_POPUP_DIALOG_ACTION);
    context.sendBroadcast(intent);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
            0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);

    appWidgetManager.updateAppWidget(widgetId, remoteViews);
}

@Override
public void onEnabled(Context context){
    //After after 3 seconds

    context.startService(new Intent(context, FirstService.class));

}
}
FirstService.java

 public class FirstService extends Service {
 WindowManager mWindowManager;
 BroadcastReceiver mReceiver;
 private static LayoutInflater mInflater=null;
 View mView;

 @Override
 public void onCreate() {
    super.onCreate();
    /*IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    mReceiver = new IncomingSms();
    registerReceiver(mReceiver, filter);*/

    Intent intent = new Intent(this, IncomingSms.class);
    intent.putExtra("appcall","ok");
    sendBroadcast(intent);

}
@Override
public void onDestroy() {
    unregisterReceiver(mReceiver);
    Log.e("onDestroy Recie", "Called");
    super.onDestroy();
 }
 @Override
 public int onStartCommand(Intent intent, int flags, int startId) {

    return super.onStartCommand(intent, flags, startId);
 }
 @Override
  public IBinder onBind(Intent intent) {
    return null;
  }
  }
IncomingSms.java

   public void onReceive(Context context, Intent intent) {
    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();
    newprovider = new MyWidgetProvider();
    counterdata=0;
    check_images_visibility=0;
    prefs = context.getSharedPreferences(MyPREFERENCES, context.MODE_PRIVATE);
    sharedpreferences = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
    buttonclick=0;
    String messagecheck = intent.getStringExtra("appcall");
    Log.d("LocalBroadcastManager", "foo : " + message);

    if(messagecheck!=null)
    {
        counterdata=0;
        restoremessage = prefs.getInt("restoremessage",0);
        if(restoremessage<3)
            updateWidgetPictureAndButtonListener(context);
    }
    //Toast.makeText(context, "Action: ", Toast.LENGTH_SHORT).show();

    try {
        if (bundle != null) {

            pdusObj = (Object[]) bundle.get("pdus");
            if(pdusObj!=null) {
                for (int i = 0; i < pdusObj.length; i++) {

                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                    message = currentMessage.getDisplayMessageBody();

                    int duration = Toast.LENGTH_LONG;
                    //Toast toast = Toast.makeText(context, "senderNum: " + senderNum + ", message: " + message, duration);
                    //Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_SHORT).show();
                    //toast.show();
                    restoredText = prefs.getInt("text", 0);
                    restoremessage = prefs.getInt("restoremessage", 0);
                    message_nospace = message.replace(" ", "");
                    /*if (message_nospace.startsWith("Order")) {
                        SharedPreferences.Editor editor = sharedpreferences.edit();
                        //restoredText = restoredText + 1;
                        restoremessage = restoremessage + 1;
                        editor.putString(storemessages + restoremessage, message);
                        editor.putInt(color_backgroung_widget + restoremessage, prefs.getInt(color_backgroung_data + restoredText, 0));

                        editor.putInt("restoremessage", restoremessage);
                        editor.commit();
                        newprovider.setQq(message);
                        //restoredText=0;
                        updateWidgetPictureAndButtonListener(context);
                    } else {*/
                        counterdata = 2;
                   // }
                    for (int counterdatanew = 1; counterdatanew <= restoredText; counterdatanew++) {
                        // prefs.getString(enterdata+counterdata,0);
                        String data = prefs.getString(enterdata + counterdatanew, null);
                        if (message_nospace.startsWith(prefs.getString(enterdata + counterdatanew, null)) && !message_nospace.equals("Notworking") && !message.equals("No new Task")) {
                            newprovider.setQq(message);
                            Calendar c = Calendar.getInstance();
                            SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM HH:mm ");
                             strDate = sdf.format(c.getTime());
                            SharedPreferences.Editor editor = sharedpreferences.edit();
                            //restoredText = restoredText + 1;
                            restoremessage = restoremessage + 1;
                            editor.putString(storemessages + restoremessage, message);
                            int datacheck = prefs.getInt(color_backgroung_data + counterdatanew, 0);
                            editor.putInt(color_backgroung_widget + restoremessage, prefs.getInt(color_backgroung_data + counterdatanew, 0));
                            editor.putInt("restoremessage", restoremessage);
                            editor.putString(time_message + restoremessage, strDate);
                            editor.commit();
                            counterdatanew = restoredText + 1;
                            counterdata = 0;
                            updateWidgetPictureAndButtonListener(context);
                        }
                    }
                    //if (intent.getAction().equals(WidgetUtils.WIDGET_UPDATE_ACTION)) {
                    //}
                    //Intent intent11 = new Intent(context,MainActivity.class);
                    //intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    //context.startActivity(intent11);
                } // end for loop
            }
          } // bundle is null
           int duration = Toast.LENGTH_LONG;
          // Toast toast = Toast.makeText(context, "senderNum: " + ", message: " + message, duration);
      } catch (Exception e) {
          Log.e("SmsReceiver", "Exception smsReceiver" + e);
      }
public void onReceive(上下文、意图){
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
newprovider=新的MyWidgetProvider();
计数器数据=0;
检查\u图像\u可见性=0;
prefs=context.getSharedReferences(MyPREFERENCES,context.MODE\u PRIVATE);
SharedReferences=context.getSharedReferences(MyPREFERENCES,context.MODE\u PRIVATE);
buttonclick=0;
String messagecheck=intent.getStringExtra(“appcall”);
Log.d(“LocalBroadcastManager”,“foo:+message”);
if(messagecheck!=null)
{
计数器数据=0;
restoremessage=prefs.getInt(“restoremessage”,0);
如果(恢复消息)