android 清理内存 广播,android-窗口小部件在“清除内存”后不起作...

问题是我使用内置的任务管理器的Clean Memory / Ram后,我的小部件停止工作.我想这与任务管理器的RAM清理方法有关.经过大量研究和尝试,我发现我需要

BroadcastReciever收听包的更改和更新:

所以我实现了,但是它不起作用,因为文档说Restarted/Cleared包没有收到此广播

在清单文件中注册接收者:

PACKAGE_REPLACED-特别是为了通知应用程序更新而调用.

PACKAGE_RESTARTED-在大多数内存清理程序正在清理内存时调用.

“数据”行用于监视应用于特定程序包的操作.

public class onRestartReciever extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

Log.d("DEBUG", "onRestartReciever");//I am not getting this log on clearing memory from task manager

}

}

我试图使用虚拟服务来获取其生命周期,即检查何时调用onDestroy,但是我发现它不是一种可靠的方法,当应用程序被任务管理器杀死时,onDestroy可能不会被调用.

所以最后,我的问题是:有没有办法告诉Android系统在任务管理器或OS清理内存时重新启动appWidgets.

注意:我的窗口小部件仅包含一个启动活动的按钮,它在大多数时间都可以正常运行,但是如果OS本身清理内存或用户从任务管理器中强制执行此操作则停止响应.我已经下载了一些窗口小部件,它似乎可以正常运行清洗内存后也.

更新:对于我的问题,不需要通过完整的代码,这是简单的Application.我的申请不包含任何活动或服务.它只包含一个带有吐司消息的按钮的小部件.在我的应用程序中只有两个类(WidgetProvider和onRestartReciever).

窗口小部件类WidgetProvider.class

public class WidgetProvider extends AppWidgetProvider {

private RemoteViews remoteViews;

private ComponentName watchWidget;

PendingIntent pi;

@Override

public void onUpdate(Context context, AppWidgetManager appWidgetManager,

int[] appWidgetIds) {

remoteViews = new RemoteViews(context.getPackageName(),

R.layout.touchwidget);

Intent toggleClickPlayer = new Intent(context.getApplicationContext() ,WidgetProvider.class);

toggleClickPlayer.setAction("PLAYER");

PendingIntent toggleIntentPlayer = PendingIntent.getBroadcast(context,0, toggleClickPlayer,endingIntent.FLAG_CANCEL_CURRENT);

remoteViews.setOnClickPendingIntent(R.id.player, toggleIntentPlayer);

appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);

}

@Override

public void onReceive(Context context, Intent intent) {

super.onReceive(context, intent);

watchWidget = new ComponentName(context,WidgetProvider.class);

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

Toast.makeText(context, " Player started",Toast.LENGTH_SHORT).show();

(AppWidgetManager.getInstance(context)).updateAppWidget(watchWidget, remoteViews);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值