当前位置:编程学习 > wap >>

android 多个activity共用线程

应用程序有多个activity,每个activity都要操作数据库(sql 2005),不想在每个activity都启用线程,感觉太耗费资源。所以想所有的activity都用一个线程来操作数据库,不知道各位高手有没有好的方案?谢谢! Android 多线程 SQL --------------------编程问答-------------------- 所有的用一个?  那你岂不是在线程里有很多复杂的逻辑?

可以用SynTask试试 --------------------编程问答-------------------- 在service里开个线程专门用来操作数据库,然后activity通过startService来调用 --------------------编程问答--------------------
引用 楼主 hzvcan 的回复:
应用程序有多个activity,每个activity都要操作数据库(sql 2005),不想在每个activity都启用线程,感觉太耗费资源。所以想所有的activity都用一个线程来操作数据库,不知道各位高手有没有好的方案?谢谢!

弄个Activity父类.其实随便建个DButil类就行了.其它activity调用这个单例类 --------------------编程问答--------------------
引用 1 楼 tanwei4199 的回复:
所有的用一个?  那你岂不是在线程里有很多复杂的逻辑?

可以用SynTask试试

线程逻辑不复杂,就是对数据库的增,删,改,查。但是4.2要求网络和数据库操作不能在主线程执行,所以要开线程。 --------------------编程问答--------------------
引用 2 楼 sinom 的回复:
在service里开个线程专门用来操作数据库,然后activity通过startService来调用

是不是要专门写个service程序,还是说service客户和应用程序一起,应用程序启动的时候生产service,退出的时候service也退出。 --------------------编程问答--------------------
引用 3 楼 guoyoulei520 的回复:
Quote: 引用 楼主 hzvcan 的回复:

应用程序有多个activity,每个activity都要操作数据库(sql 2005),不想在每个activity都启用线程,感觉太耗费资源。所以想所有的activity都用一个线程来操作数据库,不知道各位高手有没有好的方案?谢谢!

弄个Activity父类.其实随便建个DButil类就行了.其它activity调用这个单例类

有专门的dbutil类,但是就是要在线程里面执行数据库操作, --------------------编程问答--------------------
引用 6 楼 hzvcan 的回复:
Quote: 引用 3 楼 guoyoulei520 的回复:

Quote: 引用 楼主 hzvcan 的回复:

应用程序有多个activity,每个activity都要操作数据库(sql 2005),不想在每个activity都启用线程,感觉太耗费资源。所以想所有的activity都用一个线程来操作数据库,不知道各位高手有没有好的方案?谢谢!

弄个Activity父类.其实随便建个DButil类就行了.其它activity调用这个单例类

有专门的dbutil类,但是就是要在线程里面执行数据库操作,

写一个activity父类 --------------------编程问答--------------------
引用 7 楼 guoyoulei520 的回复:
Quote: 引用 6 楼 hzvcan 的回复:

Quote: 引用 3 楼 guoyoulei520 的回复:

Quote: 引用 楼主 hzvcan 的回复:

应用程序有多个activity,每个activity都要操作数据库(sql 2005),不想在每个activity都启用线程,感觉太耗费资源。所以想所有的activity都用一个线程来操作数据库,不知道各位高手有没有好的方案?谢谢!

弄个Activity父类.其实随便建个DButil类就行了.其它activity调用这个单例类

有专门的dbutil类,但是就是要在线程里面执行数据库操作,

写一个activity父类

写个父类是什么意思?不太明白? --------------------编程问答--------------------
引用 5 楼 hzvcan 的回复:
Quote: 引用 2 楼 sinom 的回复:

在service里开个线程专门用来操作数据库,然后activity通过startService来调用

是不是要专门写个service程序,还是说service客户和应用程序一起,应用程序启动的时候生产service,退出的时候service也退出。

在你的android项目里写一个service类。。。不用bind的方式 --------------------编程问答-------------------- 考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。 --------------------编程问答--------------------
引用 10 楼 woyaowenzi 的回复:
考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何? --------------------编程问答--------------------
引用 11 楼 hzvcan 的回复:
Quote: 引用 10 楼 woyaowenzi 的回复:

考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何?

单例对象就是直接调用方法一样,本地的Service也和调用方法一样,不存在响应速度的问题。除非是不同进行间通信,否则不会存在你想像的问题。就算是进程间使用Service通信,内部也是通过Binder机制来实现了,速度应该很快的。 --------------------编程问答--------------------
引用 12 楼 woyaowenzi 的回复:
Quote: 引用 11 楼 hzvcan 的回复:

Quote: 引用 10 楼 woyaowenzi 的回复:

考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何?

单例对象就是直接调用方法一样,本地的Service也和调用方法一样,不存在响应速度的问题。除非是不同进行间通信,否则不会存在你想像的问题。就算是进程间使用Service通信,内部也是通过Binder机制来实现了,速度应该很快的。

我用这个单例对象执行数据库操作,有时候是要返回大量数据给调用的activity,这中间会存在什么问题吗?谢谢! --------------------编程问答--------------------
引用 13 楼 hzvcan 的回复:
Quote: 引用 12 楼 woyaowenzi 的回复:

Quote: 引用 11 楼 hzvcan 的回复:

Quote: 引用 10 楼 woyaowenzi 的回复:

考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何?

单例对象就是直接调用方法一样,本地的Service也和调用方法一样,不存在响应速度的问题。除非是不同进行间通信,否则不会存在你想像的问题。就算是进程间使用Service通信,内部也是通过Binder机制来实现了,速度应该很快的。

我用这个单例对象执行数据库操作,有时候是要返回大量数据给调用的activity,这中间会存在什么问题吗?谢谢!

我认为没有问题,你查询SQL的方法实际上是在线程中运行的,所以不会对UI造成影响,当查询完后,你会送给UI。数据量大只会增加内存,并不会有调用的性能存在。 --------------------编程问答--------------------
引用 14 楼 woyaowenzi 的回复:
Quote: 引用 13 楼 hzvcan 的回复:

Quote: 引用 12 楼 woyaowenzi 的回复:

Quote: 引用 11 楼 hzvcan 的回复:

Quote: 引用 10 楼 woyaowenzi 的回复:

考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何?

单例对象就是直接调用方法一样,本地的Service也和调用方法一样,不存在响应速度的问题。除非是不同进行间通信,否则不会存在你想像的问题。就算是进程间使用Service通信,内部也是通过Binder机制来实现了,速度应该很快的。

我用这个单例对象执行数据库操作,有时候是要返回大量数据给调用的activity,这中间会存在什么问题吗?谢谢!

我认为没有问题,你查询SQL的方法实际上是在线程中运行的,所以不会对UI造成影响,当查询完后,你会送给UI。数据量大只会增加内存,并不会有调用的性能存在。

单例线程和servic4e哪个要好点呢? --------------------编程问答--------------------
引用 15 楼 hzvcan 的回复:
Quote: 引用 14 楼 woyaowenzi 的回复:

Quote: 引用 13 楼 hzvcan 的回复:

Quote: 引用 12 楼 woyaowenzi 的回复:

Quote: 引用 11 楼 hzvcan 的回复:

Quote: 引用 10 楼 woyaowenzi 的回复:

考虑使用HandlerThread类,并将其实例放在一个Service或者单例对象中去。

我想多activity共用一个线程主要是为了节约资源,提供速度,不知道service或者单例对象响应速度如何?

单例对象就是直接调用方法一样,本地的Service也和调用方法一样,不存在响应速度的问题。除非是不同进行间通信,否则不会存在你想像的问题。就算是进程间使用Service通信,内部也是通过Binder机制来实现了,速度应该很快的。

我用这个单例对象执行数据库操作,有时候是要返回大量数据给调用的activity,这中间会存在什么问题吗?谢谢!

我认为没有问题,你查询SQL的方法实际上是在线程中运行的,所以不会对UI造成影响,当查询完后,你会送给UI。数据量大只会增加内存,并不会有调用的性能存在。

单例线程和servic4e哪个要好点呢?

都差不多吧,因为都是本地的操作,而不是IPC。
本地Service你可以参考以下代码:(来自己于官方网站http://developer.android.com/guide/components/bound-services.html#Binder)

public class LocalService extends Service {
    // Binder given to clients
    private final IBinder mBinder = new LocalBinder();
    // Random number generator
    private final Random mGenerator = new Random();

    /**
     * Class used for the client Binder.  Because we know this service always
     * runs in the same process as its clients, we don't need to deal with IPC.
     */
    public class LocalBinder extends Binder {
        LocalService getService() {
            // Return this instance of LocalService so clients can call public methods
            return LocalService.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    /** method for clients */
    public int getRandomNumber() {
      return mGenerator.nextInt(100);
    }
}
--------------------编程问答-------------------- 我用application保存线程对象,然后其他activity可以用获取application,然后获取线程对象。昨晚测试是可以的,其他activity也可以用数据库操作线程。
不知道这样有没有什么潜在问题或者性能或者资源问题? --------------------编程问答--------------------
引用 17 楼 hzvcan 的回复:
我用application保存线程对象,然后其他activity可以用获取application,然后获取线程对象。昨晚测试是可以的,其他activity也可以用数据库操作线程。
不知道这样有没有什么潜在问题或者性能或者资源问题?

实际上,你这样做的话,只要你的应用没有被系统强制杀掉,该线程都是一直存在的,包括你退出主界面也一样(退出主界面并不代表程序真正退出)。这种做法我觉得还不如用Service好。

楼主,啥时候给分呀。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,