Android 安卓;应用程序全局“;线
我有一个应用程序,它由3个活动组成。在第一个活动中,我在onCreate()中启动线程,并在onDestroy()中停止它,因此我希望该线程在应用程序运行时能够正常工作。在这个线程中,我从数据库读取数据并将其发送到服务器 主要问题:是否有正确的方法来完成这项工作,或者在应用程序运行时第一个活动可能会被破坏?如何以正确的方式做到这一点 附带问题:由于对数据库的多次写入问题,是否有方法创建类,该类将管理SQLite写入,并且可以从每个活动访问该类Android 安卓;应用程序全局“;线,android,multithreading,android-sqlite,Android,Multithreading,Android Sqlite,我有一个应用程序,它由3个活动组成。在第一个活动中,我在onCreate()中启动线程,并在onDestroy()中停止它,因此我希望该线程在应用程序运行时能够正常工作。在这个线程中,我从数据库读取数据并将其发送到服务器 主要问题:是否有正确的方法来完成这项工作,或者在应用程序运行时第一个活动可能会被破坏?如何以正确的方式做到这一点 附带问题:由于对数据库的多次写入问题,是否有方法创建类,该类将管理SQLite写入,并且可以从每个活动访问该类 我考虑过使用应用程序类,但对此有一些疑问。向服务器发
我考虑过使用应用程序类,但对此有一些疑问。向服务器发送数据通常不是连续的操作,而是可重复的作业类型op,所以看起来您应该使用
IntentService
而不是线程。另外,在onCreate
中设置和在onestory
中销毁也不是最好的方法,因为即使应用程序位于后台,线程也会运行(这通常意味着它将没有用处)。扩展应用程序是可以的,但我认为您不需要走那么远。当不再需要某个活动时,即使应用程序的其余部分处于活动状态,您也不能依赖该活动不被销毁。不过,您可以让所有活动都能够启动/停止线程,并使用应用程序全局引用计数器,以便知道何时要再次启动线程或只是增加引用计数
关于数据库管理类,可以有多个类实例;您正在管理的SQLite数据库是线程安全的。如果您有其他原因只需要助手的一个实例,您可以使用Singleton模式创建它,这样第一个访问它的客户端就会创建实例,所有后续客户端都会得到它的指针。应用程序类可用于管理应用程序全局内容。无论何时始终运行线程都是一个好主意,这是另一个问题
package com.yourapp;
public class YourApplication extends Application {
@Override
public void onCreate() {
// [...]
}
// [...]
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourapp"
android:versionName="1.0"
android:versionCode="1.0">
<application android:name="YourApplication"
android:label="@string/app_name"
android:icon="@drawable/icon">
<!-- ... -->
</application>
</manifest>
- 对于第一个问题,使用
与服务器进行通信IntentService
- 对于第二个问题,扩展
类并使其成为单例。 就这样SQLiteOpenHelper