1

I have an alarm manager whose receiver I had registered in my code. The whole point of having an alarm manager in case of Timer is that it should run in background when in Pause state. Now, do I unregister it in onPause() or in OnDestroy() and will it still run in background and wake up and the receiver would receive it?

EDIT:

   @Override
    public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, MyClass.class);
    i.putExtra("fromReciever", true);
    startActivity(i);

    }
4

1 回答 1

3

我建议您将其注册到您的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();
   }

}

你已经准备好了。

此外,您可以查看本教程以获取更多信息。

添加

如果你想恢复你的,你可以在你的方法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 
    }
}
于 2015-02-19T18:35:48.773 回答