这个问题可能看起来有点宽泛,但我相信一旦你读完,背景就会变得清晰。
我需要编写一个不扩展活动的类,但我希望它能够运行onNewIntent方法。
原因是因为该类实际上没有或不需要接口或连接到UI。我只是需要它来嗅探背景中的一些意图。我还不能让onNewIntent部分工作。
这就是我的意思。
public class MyClass {
private PendingIntent mPendingIntent;
private IntentFilter[] mFilters;
public MyClass(){
this.activity = activity;
doAction();
}
public void doAction(){
mPendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, new Intent(activity.getApplicationContext(),getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
mFilters = new IntentFilter[]{
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED),
new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED)};
}
//Now i want to do some action when there is a new intent but since it doesn't extend activity, this don't work. Extending activity will mean using onCreate and all that other good stuff which i don't want
@Override
public void onNewIntent(Intent intent) {
Toast.makeText(activity.getApplicationContext(), "Got to intent", Toast.LENGTH_SHORT).show();
super.onNewIntent(intent);
doStuffWithIntent(intent);
//This block doesn't work. I'm looking for alternative to get working.
}
}
由于该类不需要接口,因此我没有理由认为它应该扩展活动。但是为了我想要正常工作,我需要检查新的意图。
想知道非活动类是否有解决方法来侦听新意图。
答案 0 :(得分:1)
我只是需要它来嗅探背景中的某些意图
有三个"频道" for Intents
:启动活动,启动和绑定服务,以及发送广播。
您在代码中引用的三个Intent
操作用于启动活动。它们只会被送到一项活动中,而你却不会嗤之以鼻。通过任何其他方式(缺少可能生根设备或构建自定义ROM)。
想知道非活动类是否有解决方法来侦听新意图。
让使用onNewIntent()
调用的活动将事件转发给非活动类。
答案 1 :(得分:0)
另一种选择是在活动中维护对类实例的引用,然后在活动的onNewIntent()
方法中调用类的公共方法