2015-04-22 185 views
-1

我正在开发一个应用程序,可在后台计算算法。自应用程序启动以来,直到它结束。 这是一个跟踪算法(现在对算法操作原理进一步的解释)。Android后台进程 - 从应用程序启动到关闭

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

它是一个AsyncTask? 如果不是还有什么? 应用程序正在运行,现在算法正在特定的屏幕上计算,我想使其成为后台进程,而不考虑当前的应用程序屏幕。

一个例子可以理解

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

回答

0

这很明显是您需要的Service - 这正是他们的主要目的 - 在后台执行长时间运行的操作,无论用户在前台使用什么Activity。你可以阅读更多关于服务HERE

+0

谢谢!!我会读一下 –

+0

谢谢!我设法处理它,发布了新的问题:) –

0

使用广播reveicer

您需要在清单定义一个接收器操作名称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"/> 

服务使用此做任何事情存在。并使用接收器接收启动事件重新启动服务,如果系统启动..

开机启动服务的代码。使服务做你的工作检查短信或任何你想要的。你需要在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); 
    } 
} 
+0

非常感谢我会尝试! –

+0

我有一个[链接](http://www.learn-android-easily.com/2013/07/bootcompleted-broadcastreceiver-in.html)为你。这就是我能做的最大。接受答案,如果它帮助.for其他用户。 –

+0

谢谢尼尔!通过服务,在论坛上发布了新的问题,如果您也检查它,将会很感激。你可以看到我在那里做了什么服务! –

0

很明显,你需要在一个独立的线程中执行你的算法。你必须选择你想如何做到这一点。

我的建议是服务或IntentService。

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

你可以在这里得到一个梦幻般的例子,与在后台运行的服务和一个TimerTask各执行了一段时间。

App to monitor other apps on android

+0

谢谢!我会阅读并回来 –

+0

谢谢!我使用服务,Service和IntentService有什么区别? –

相关问题