/** * @(#) 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读和取不用等待