如何使用服务继续运行计时器?

时间:2017-07-28 12:10:35

标签: android service

我遇到服务问题,希望你帮助我。 我的活动中有一个倒数计时器,我希望通过服务保持运行。 但是当我复制代码时,编译器会显示NullPointerException。 请帮我。代码是这些:

public void setMyTimer(){

    countDown.start(86400);
    countDown.setOnCountdownEndListener(new CountdownView.OnCountdownEndListener() {
        @Override
        public void onEnd(CountdownView cv) {

            if (m == 0) {
                a = a + 1000000;
                if (a == 366000000) {
                    a = 0;
                    Snackbar snackbar = Snackbar.make(coordinator, "Game is over", Snackbar.LENGTH_LONG);
                    snackbar.show();
                    cv.stop();
                } else {
                    m = m + a;
                    money.setText(String.valueOf(m));
                    cv.start(86400000);
                }

            } else {
                Snackbar snack = Snackbar.make(coordinator, "You ddin't spend money", Snackbar.LENGTH_LONG);
                snack.show();
            }

        }
    });

}

和我的服务类代码是:

public class TimerService extends Service {

private MainActivity mainActivity = new MainActivity();


@Nullable
@Override
public IBinder onBind(Intent intent) {

    return null;
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {


    mainActivity.setMyTimer();

    return START_STICKY;
}

}

如果我的代码毁了你,我很抱歉因为我还是初学者。

1 个答案:

答案 0 :(得分:0)

您无法通过调用Activity来创建new,它们由基于Intents的框架管理。与Service相同。它们也是单独的组件,不应包含对另一个组件的直接引用。

我建议您参阅基本的Android开发和Java课程,以帮助解决此类问题,并更加熟悉该框架。