【问题标题】:Execute Custom method in class using an Intent android使用 Intent android 在类中执行自定义方法
【发布时间】:2012-08-09 08:15:37
【问题描述】:

我想调用一个可以在 Intent 中传递的类中的自定义方法。在 Intent 的接收方,我想调用该类的自定义方法。假设我有一个类扩展了 ResultReceiver 这两个方法

class MyClass extends ResultReceiver {

    public doBefore(){ //custom method
        Log.d("sdf","before");
    }

    public doAfter(){  // custom method
        Log.d("sdf","After");
    }

    @Override
    public void onReceiveResult(final int resultCode,   final Bundle resultData) {

    }
}

我想将 Intent 中的 MyClass 传递给另一个 Activity 或 Service。所以假设我将 MyClass 传递给服务

MyClass mcl = new MyClass()
final Intent intent = new Intent(mContext, MyService.class);
intent.putExtra(INTENT_EXTRA_RECEIVER, mcl);

在 MyService 类中,我在 onHandleIntent() 方法中获得了意图。

MyService 类中的方法

@Override
protected void onHandleIntent(Intent intent) {
    MyClass eval = (MyClass) intent.getParcelableExtra(INTENT_EXTRA_RECEIVER);
    eval.doBefore(); // Is this possible??
    eval.doAfter(); 
    sendSuccess(intent, null);
}

现在我想执行“MyClass”类中的两个方法。最后调用“MyClass”中的 onReceiveResult() 但我无法调用我的自定义方法。我不想开始活动或服务。我想执行我的自定义方法。

我是否可以从 Service 或 Activity 中调用我的自定义方法,例如 ResultReceiver 的 onReceiveResult().??

【问题讨论】:

  • 您将自己的方法添加到扩展 ResultReceiver 的类中。因为根据我的理解,扩展 ResultReceiver 的类就像回调一样使用。

标签: android service android-intent callback


【解决方案1】:

我不确定我是否正确理解了您的问题,因为您尝试通过意图调用进行访问似乎令人困惑。难道不能简单地像下面那样做吗?

mcl.doBefore();

【讨论】:

  • 不可能在意图的接收方调用方法。您将意图中的对象从 A 传递到 B。在 B 中,您可以访问意图 Extras。我的问题是如何在 B 中调用 objects 方法。
  • @Madjokr,是的,我明白你的意思,而且我知道如何调用意图本身。我只是在想你是否需要它来通过意图来包装你的电话,难道不能直接拨打电话吗?否则,从意图启动方法调用您的方法可能会更好,那么您根本不用担心接口和将来的名称更改。 :-)
  • 你能给我举个例子吗?我没明白你的意思。
猜你喜欢
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多