【问题标题】:How to call the handler from separate class in android?如何从android中的单独类调用处理程序?
【发布时间】:2013-04-30 07:39:16
【问题描述】:

在我的应用程序中,我尝试设置一个超时函数,我无法在单独的类中调用 handler 方法。

我的超时课程

 public class Timeout_function {

private Handler mHandler;
Activity activity;

public Timeout_function(Activity activity,Handler mHandler) {
    super();
    this.activity = activity;
    this.mHandler = mHandler;
}

Runnable myTask = new Runnable() {
    @Override
    public void run() {
        Toast.makeText(activity, "Test", 1000).show();
        mHandler.postDelayed(this, 1000);
    }
};

// just as an example, we'll start the task when the activity is started
public void onStart() {
    mHandler.postDelayed(myTask, 1000);
}

// at some point in your program you will probably want the handler to stop
// (in onStop is a good place)
public void onStop() {

    mHandler.removeCallbacks(myTask);
}
}

主类 在主类中我以这种方式调用该方法,但它在运行时显示错误,

Timeout_function timeout = new Timeout_function(this, mHandler);
    timeout.onStart();

如何调用主类中的方法。有知道的请帮我解决这个问题。

【问题讨论】:

  • 你的“处理函数”是什么意思,因为你的mHandler是一个对象。另外,为什么你认为你不能调用它?另外,你的架构是什么?应该与Handler交互的代码在哪里?
  • @ClassStacker 如何启动与处理程序的交互。
  • 我相信你已经从一个活动中提取了这段代码,作为Activity生命周期的一部分,onStart会被你调用。它没有这样做,所以现在你必须自己打电话给onStart

标签: android android-handler


【解决方案1】:

您为什么不使用Service 而不是创建一个单独的类?

我会坚持你使用 Service 并通过调用 startService(intent);onStartCommand() 的 Handler 来启动你的 Runnable

您可以使用 Handler 停止 Runnable,方法是将其放在 Service 的 onDestroy() 方法中并由 stopService(intent) 调用。

这就是我所做的,它就像一个魅力!

【讨论】:

  • 我是这个概念的新手,如何在我的应用程序中实现服务。
  • 请 google 一下,你会发现很多在 Android 中创建服务的示例。
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多