gpt4 book ai didi

java - Android - 使用多个线程执行不同的功能

转载 作者:行者123 更新时间:2023-11-29 21:00:56 25 4
gpt4 key购买 nike

我是 Android 编程的新手,但在其他语言方面有一些经验。我想创建一个 APP,它的工作原理是这样的。

enter image description here

  1. APP 是一个进程,它每 10 秒询问我的 Web-/Database-Server 是否有要执行的事件。

  2. Web-/Database-Server 使用事件 ID 甚至函数名称进行响应。

  3. APP 打开一个新线程,执行带有 id 的事件,或者更好的是直接使用函数名。

我的问题是:

  1. 这是表演吗?或者这会很容易崩溃吗?
  2. 它是否仅限于进程中的 2 个线程,或者我什至可以每次为我要执行的函数打开一个新线程吗?可能是因为其他功能还在运行?
  3. 如何使用返回值执行函数?例如

    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;
} }

最佳答案

  1. 这是表演吗?或者这会很容易崩溃吗?
    • 是的,这会影响性能。每 10 秒请求一次 api 也会耗尽您的电池。
    • 通过适当的异常处理,它不会轻易崩溃。

它是否仅限于进程内的 2 个线程,或者我什至可以在每次为我要执行的函数打开一个新线程时打开?可能是因为其他功能还在运行?

  • 您可以运行任意数量的线程,但很难维护其中的代码
    案件 。您可以使用 VOLLY 或 OKHTTP 来处理网络相关的事情,他们会处理您的线程 部分也。

如何使用返回值执行函数?例如

InputStream in = response.getEntity().getContent();//获取实体中的数据

公开(无效) {//执行一个与变量“in”同名的函数

  • 要在运行时使用方法名称调用方法,您可以在 java 中使用 REFLECTION。这将满足您的需求。

关于java - Android - 使用多个线程执行不同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com