注销接收器是必要的吗?
Unregister Receiver is it necessary?
我有一个警报管理器,我已经在我的代码中注册了它的接收器。在 Timer
的情况下拥有警报管理器的全部意义在于,当处于暂停状态时,它应该在后台 运行。现在,我是在 onPause()
还是在 OnDestroy()
中注销它,它是否仍会在后台 运行 并唤醒并且接收者会收到它?
编辑:
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyClass.class);
i.putExtra("fromReciever", true);
startActivity(i);
}
我建议您在 AndroidManifest.xml
文件中注册它。示例:
<receiver android:name="com.example.android.MyReceiver" >
<intent-filter>
<action android:name="com.example.android.USER_ACTION" />
</intent-filter>
</receiver>
只要您的设备上安装了该应用程序,这将使您的接收器保持注册状态。您所要做的就是实施它:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
你已经准备好了。
此外,您可以查看 this tutorial 了解更多信息。
已添加
如果您想恢复 Activity
,您可以在 Receiver
onReceive
方法中添加此代码。
Intent intent = new Intent(this, YourActivity.class);
intent.putExtra("fromOnReceive", true);
context.startActivity(intent);
然后,在您的 Activity onCreate
方法中,您检查它是否是从您的 Receiver
调用的
@Override
protected void onCreate(Bundle savedInstanceState) {
if(getIntent().hasExtras()){
boolean fromReceiver = getIntent().getExtras().getBoolean("fromOnReceive");
if(fromReceiver)
//Do work
}
}
我有一个警报管理器,我已经在我的代码中注册了它的接收器。在 Timer
的情况下拥有警报管理器的全部意义在于,当处于暂停状态时,它应该在后台 运行。现在,我是在 onPause()
还是在 OnDestroy()
中注销它,它是否仍会在后台 运行 并唤醒并且接收者会收到它?
编辑:
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyClass.class);
i.putExtra("fromReciever", true);
startActivity(i);
}
我建议您在 AndroidManifest.xml
文件中注册它。示例:
<receiver android:name="com.example.android.MyReceiver" >
<intent-filter>
<action android:name="com.example.android.USER_ACTION" />
</intent-filter>
</receiver>
只要您的设备上安装了该应用程序,这将使您的接收器保持注册状态。您所要做的就是实施它:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}
你已经准备好了。
此外,您可以查看 this tutorial 了解更多信息。
已添加
如果您想恢复 Activity
,您可以在 Receiver
onReceive
方法中添加此代码。
Intent intent = new Intent(this, YourActivity.class);
intent.putExtra("fromOnReceive", true);
context.startActivity(intent);
然后,在您的 Activity onCreate
方法中,您检查它是否是从您的 Receiver
@Override
protected void onCreate(Bundle savedInstanceState) {
if(getIntent().hasExtras()){
boolean fromReceiver = getIntent().getExtras().getBoolean("fromOnReceive");
if(fromReceiver)
//Do work
}
}