我是 Android 编程的新手,但在其他语言方面有一些经验。我想创建一个 APP,它的工作原理是这样的。
APP 是一个进程,它每 10 秒询问我的 Web-/Database-Server 是否有要执行的事件。
Web-/Database-Server 使用事件 ID 甚至函数名称进行响应。
- APP 打开一个新线程,执行带有 id 的事件,或者更好的是直接使用函数名。
我的问题是:
- 这是表演吗?或者这会很容易崩溃吗?
- 它是否仅限于进程中的 2 个线程,或者我什至可以每次为我要执行的函数打开一个新线程吗?可能是因为其他功能还在运行?
如何使用返回值执行函数?例如
InputStream in = response.getEntity().getContent(); //获取实体中的数据
公开(无效) { //执行一个与变量“in”同名的函数 }
结果应该是:一个线程每 10 秒询问我的 Web-/Database-Server 是否有事件。该事件在一个线程中执行,并且这是并行工作的(同时不会崩溃,甚至不会卡住)。
这些线程的示例代码将不胜感激。
到目前为止我的代码:
public class service extends Service { private static final String TAG = "MyService";
@Override public IBinder onBind(Intent intent) { return null; } public void onDestroy() { Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); Log.d(TAG, "onDestroy"); } @Override public int onStartCommand(Intent intent, int flags, int startid) { Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); Log.d(TAG, "onStart"); Thread thread = new Thread(new Runnable() { @Override public void run() { new Timer().scheduleAtFixedRate(new TimerTask() { @Override public void run() { System.out.println("Send GO!"); Device dev = new Device(); dev.getDeviceId(getBaseContext()); dev.getEmail(getBaseContext()); dev.sendDeviceItems(); } }, 0, 10000);//put here time 1000 milliseconds=1 second } }); thread.start(); return Service.START_STICKY; } }
最佳答案
- 这是表演吗?或者这会很容易崩溃吗?
- 是的,这会影响性能。每 10 秒请求一次 api 也会耗尽您的电池。
- 通过适当的异常处理,它不会轻易崩溃。
它是否仅限于进程内的 2 个线程,或者我什至可以在每次为我要执行的函数打开一个新线程时打开?可能是因为其他功能还在运行?
- 您可以运行任意数量的线程,但很难维护其中的代码
案件 。您可以使用 VOLLY 或 OKHTTP 来处理网络相关的事情,他们会处理您的线程 部分也。
如何使用返回值执行函数?例如
InputStream in = response.getEntity().getContent(); //获取实体中的数据
公开(无效) { //执行一个与变量“in”同名的函数
- 要在运行时使用方法名称调用方法,您可以在 java 中使用 REFLECTION。这将满足您的需求。
关于java - Android - 使用多个线程执行不同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126284/