Android后台进程 - 从应用程序启动到关闭

时间:2015-04-22 09:03:53

标签: android algorithm

我正在开发一个在后台计算算法的应用。自应用程序启动以来,直到它结束。 这是一种跟踪算法(现在进一步解释算法运算原理)。

因此,无论应用程序,点击,wifi通信消息(已在应用程序上完成)上的用户操作,都需要在应用程序的所有屏幕上计算后台任务,所有操作都需要在算法在后台运行时完成。

是AsyncTask吗? 如果没有,还有什么? 应用程序正在运行,现在正在特定的屏幕上计算算法,我想让它成为一个与当前应用程序屏幕无关的后台进程。

一个例子将不胜感激

P.S-进一步发展,如果不需要,现在不需要讨论: 1.下一阶段是插入一个指示(虚拟灯泡),每次状态之间的变化取决于算法结果。 2.算法是从连接到手机的USB设备获取数据,因为手机是使用FTDI芯片的主机。

3 个答案:

答案 0 :(得分:0)

它显然是if (y1 > y) { //pointer moved down (y = 0 is at the top of the screen) startSyncData(); } 你需要的 - 这正是他们的主要目的 - 在后台进行长时间运行,无论用户是Service在前台玩。您可以阅读有关服务HERE的更多信息。

答案 1 :(得分:0)

使用广播顾客

您需要在清单中使用操作名称android.intent.action.BOOT_COMPLETED定义接收器。

<!-- Start the Service if applicable on boot -->
<receiver android:name="com.prac.test.ServiceStarter">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>

确保还包括已完成的启动权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

使用服务来保持任何东西。如果系统启动,则使用接收器接收Boot Up事件以重新启动服务..

启动时启动服务的代码。 Make Service负责检查短信或任何你想要的东西。你需要在MyPersistingService中完成自己的工作。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ServiceStarter extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent("com.prac.test.MyPersistingService");
        i.setClass(context, MyPersistingService.class);
        context.startService(i);
    }
}

答案 2 :(得分:0)

很明显,您需要在一个独立的线程中执行您的算法。你必须选择你想要的方式。

我的推荐是服务或IntentService。

https://developer.android.com/training/run-background-service/index.html

你可以在这里得到一个很棒的例子,一个在后台运行的服务,每一段时间都会执行一次TimerTask。

App to monitor other apps on android