Android NativeActivity。如何在其他地方做一些工作?

时间:2016-03-15 08:18:21

标签: java android c++ multithreading

我有自己的活动类,从NativeActivity扩展。我需要在c ++方面做大量工作(使用大文本文件)。所以我想在separete线程中这样做。另外我想在c ++端使用pthread执行此操作。是否可以或者我只能在java端使用线程?如果能获得有关在基于NativeActivity的应用程序中使用线程的链接,我将非常感激。谢谢。

2 个答案:

答案 0 :(得分:0)

尝试我的代码如下所示....................

public class MainActivity extends Activity {
//Reference Variable
    Context con;

    TextView tv_start;


    Thread t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        tv_start            = (TextView) findViewById(R.id.tv_start);



\
//Start Button Functionality
         tv_start.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {

                 t = new Thread() {
                     @Override
                     synchronized public void run() {
                         try {
                             while (!isInterrupted() && pause) {
                                 Thread.sleep(1000);
                                 runOnUiThread(new Runnable() {
                                     @Override
                                     public void run() {

                                    // do you  need

                                     }  // run close

                                 }); // Runnable close

                             }
                         } catch (InterruptedException e) {
                         }
                     }
                 };
                 t.start();
             }
         });


    } // onCreate method close

答案 1 :(得分:0)

是可以在Native级别创建线程。

假设您知道如何调用本机C / C ++函数,我将为您提供这个简单的代码供参考。

使用pthread创建线程与在linux中相同。

pthread_t threadID; // declaration

void Start()
{
    // Thread which is running in your native level
    while(1)
    {
        //your code goes here
    }
}

void StartThread()
{
    // This function should be called from java level 
    int res = 0;
    res = pthread_create(&threadID, NULL, Start, NULL);
    if(res!=null)
        print thread created
    else
        not created
}