/**
* @(#) TestActivity.java Created on 2014-3-7
*
*
*/
package com..android.app.ui;
import java.util.Random;
import java.util.UUID;
import com..gx.oatos.R;
import com..android.business.provider.PreferenceProvider;
import com..android.preferences.SysPreferences;
import android.app.Activity;
import android.os.Bundle;
import android.preference.Preference;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* The class <code>TestActivity</code>
*
* @author Feng OuYang
* @version 1.0
*/
public class TestActivity extends Activity {
private Button button1,button2;
/*
* (non-Javadoc)
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.test);
super.onCreate(savedInstanceState);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Write()).start();
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Read()).start();
}
});
}
private class Read implements Runnable{
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
for(;;){
Log.e("Read", "====================Read==================================1:" + System.currentTimeMillis());
new PreferenceProvider(getApplicationContext()).getlist();
// try {
//Thread.sleep(10);
Log.e("Read", "====================Read==================================");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
Log.e("Read", "====================Read==================================2:" + System.currentTimeMillis());
}
}
}
private class Write implements Runnable{
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
for(;;){
Log.e("Write", "====================Write==================================1:" + System.currentTimeMillis());
SysPreferences.put(UUID.randomUUID().toString(), "111");
// try {
//Thread.sleep(10);
Log.e("Write", "====================Write==================================");
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
Log.e("Write", "====================Write==================================2:" + System.currentTimeMillis());
}
}
}
}
ContentProvider :
/**
* @(#) ChinaUnicomOatosProvider.java Created on 2014-3-7
*
* Copyright © 2013 深圳企业云科技有限公司 版权所有
*/
package com.qycloud.android.app;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
import com.qycloud.android.provider.OatosProvider;
/**
* The class <code>ChinaUnicomOatosProvider</code>
*
* @author Feng OuYang
* @version 1.0
*/
public class ChinaUnicomOatosProvider extends OatosProvider {
/* (non-Javadoc)
* @see com.qycloud.android.provider.OatosProvider#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)
*/
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
Log.d("ChinaUnicomOatosProvider query", "thread:" + Thread.currentThread().getName());
return super.query(uri, projection, selection, selectionArgs, sortOrder);
}
/* (non-Javadoc)
* @see com.qycloud.android.provider.OatosProvider#insert(android.net.Uri, android.content.ContentValues)
*/
@Override
public Uri insert(Uri uri, ContentValues values) {
Log.d("ChinaUnicomOatosProvider insert", "thread:" + Thread.currentThread().getName());
return super.insert(uri, values);
}
}
测试结果 :contentprovider 读取写入时会采用一个或者多个线程操作数据库sqlite,activity读和取不用等待