【发布时间】:2010-10-03 13:08:47
【问题描述】:
我正在尝试使用 onPause() 方法中实现的以下 BroadcastReceiver 在充电时自动启动我的夜间应用程序:
BroadcastReceiver test = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
unregisterReceiver(this);
Intent i = new Intent(context, NightClock.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
};
registerReceiver(test, new IntentFilter(Intent.ACTION_POWER_CONNECTED));
插入 USB 电缆时会触发 onReceive() 方法,但活动不会启动。但是日志显示了这一点:
I/ActivityManager( 79): Starting activity: Intent { flg=0x10000000 cmp=com.meins.nightclock/.NightClock }
任何想法为什么日志显示活动已启动,但没有任何反应?
【问题讨论】:
-
请使用 LogCat 中的更多内容更新您的问题——这一行之前的几行和这一行之后的十几行。另外,为什么
FLAG_ACTIVITY_NEW_TASK?另外,当 ACTION_POWER_CONNECTED 发生时,注册此BroadcastReceiver的活动是否仍然存在? -
连接电源后,LogCat 中没有更多线路。
BroadcastReceiver在它应该启动的同一个活动中注册。此活动仍在后台运行(LogCat 应用程序已被置于前面)。如果此活动在任务管理器中被终止,BroadcastReceiver似乎根本不会触发。这种自动启动我的应用的方法从一开始就错了吗?
标签: android android-activity broadcastreceiver