如何正确编写Android 代码
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章将为大家详细讲解有关如何正确编写Android 代码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。当系统启动完成时,会编写Android 代码
千家信息网最后更新 2024年09月22日如何正确编写Android 代码
这篇文章将为大家详细讲解有关如何正确编写Android 代码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
当系统启动完成时,会编写Android 代码为android.intent.action.BOOT_COMPLETED.我们可以编写一个BroadcastReceiver 接收这个广播就可以了。
在编写Android 代码中,对于数据的存贮,有几种方式,有文件方式,有文件式数据库方式,Android自带了一个SQLite数据库,做嵌入开发的人对这个跨平台的本地文件数据库一定不会陌生,在Android对于数据的访问,提出了新的方式,ContentProvider方式,类似于MS的ContentProvider方式的,OLEDB,及ODBC统一的数据方式。
public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public DatabaseHelper(Context ct,String dbName) { super(ct,dbName,null,1); } public boolean insert(String insert) { this.getWritableDatabase().execSQL(insert); return true; } public boolean update(String update) { this.getWritableDatabase().execSQL(update); return true; } public boolean delete(String del) { this.getWritableDatabase().execSQL(del); return true; } public Cursor query(String query) { Cursor cur = this.getReadableDatabase().rawQuery(query, null); return cur; } } 再创建一个使用者(消费者) package test.DB; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class DBActivity extends Activity { private SQLiteDatabase mdb = null; private DatabaseHelper helper = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initDatabase(); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub super.onCreateOptionsMenu(menu); menu.add(1, Menu.FIRST +1, 1, "GetName"); menu.add(1, Menu.FIRST +2, 2, "Test"); return true; } public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub super.onOptionsItemSelected(item); switch (item.getItemId()) { case Menu.FIRST+ 1: { TextView tv = (TextView)this.findViewById(R.id.view_main); tv.setText(this.getName()); break; } case Menu.FIRST + 2: { this.setTitle("Del Item..."); break; } } return true; } private void initDatabase() { helper = new DatabaseHelper(this,"dbfile"); //mdb = this.openOrCreateDatabase("dbfile", 0, null); //String sql_create = "create table test (id int, name TEXT)"; //mdb.execSQL(sql_create); String sql_insert = "insert into test(id, name) values(55, 'namexx')"; //mdb.execSQL(sql_insert); helper.insert(sql_insert); } private String getName() { String name = null; //mdb = helper.getReadableDatabase(); Cursor cur = helper.query("select * from test"); cur.moveToFirst(); do { namename = name + cur.getString(1)+ "\n"; } while(cur.moveToNext()); return name; } } 这些代码读起来是不是有点Visual Basic的感觉?呵呵,所以,以后说不定.net,Android,java,blackberry,最终都成为一致的API,当然,这只是我们的期望,这样大家不必整天花这么多时间学这些无聊的接口了。 好了,该我们的ContentProvider出场了,与Service,BroadcastReceiver等组件一样,继承特定的Interface,在AndroidManifest.xml里声明这个ContentProvider,调用者就可以拿来使用了。 首先我们定义一个ContentProvider: package test.DB; import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.widget.Toast; public class TestProvider extends ContentProvider { private DatabaseHelper mdbHelper = null; final static String TABLE_NAME = "test"; @Override public int delete(Uri arg0, String arg1, String[] arg2) { mdbHelper.getWritableDatabase().delete(TABLE_NAME, arg1, arg2); return 0; } @Override public String getType(Uri uri) { // TODO Auto-generated method stub return null; } @Override public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub mdbHelper.getWritableDatabase().insert(TABLE_NAME, "", values); return null; } @Override public boolean onCreate() { // TODO Auto-generated method stub mdbHelper = new DatabaseHelper(this.getContext(), "dbfile"); return true; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor cur = mdbHelper.getReadableDatabase().query(TABLE_NAME,projection,selection,null,null,null, null); Toast.makeText(this.getContext(), "test Cur!", Toast.LENGTH_SHORT); return cur; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { mdbHelper.getWritableDatabase().update(TABLE_NAME, values, selection, null); return 0; } } 老规矩,AndroidManifest.xml来定义这个Provider这里的android:authorities = "com.my.provider"是标识这个ContentProvider,调用者可以根据这个标识来找到它, 我们组合一个能找到它的Uri, public class ProviderConst { public static final Uri MY_TEST_URI = Uri.parse("content://com.my.provider/test"); } content 指的是内容提供者ContentProvider。 //com.my.provider映射到我们已定义的那个ContentProvider标识 /test这个作为一个参数,传给ContentProvider,可以根据这个参数来决定操作目标,比如数据库中的哪张表,文件中的那一部分数据等。 我们来操作这个内容提供者: private String getName() { String name = null; Cursor cur = this.getContentResolver().query(ProviderConst.MY_TEST_URI,new String[]{"id","name"},null, null, null); if (cur == null) return null; cur.moveToFirst(); do { namename = name + cur.getString(1)+ "\n"; } while(cur.moveToNext()); return name; } 我们也可以这样使用: private String getName() { String name = null; Cursor cur = this.managedQuery(ProviderConst.MY_TEST_URI,new String[]{"id","name"},null, null, null); if (cur == null) return null; cur.moveToFirst(); do { namename = name + cur.getString(1)+ "\n"; } while(cur.moveToNext()); return name; }
编写Android 代码读起来是不是有点Visual Basic的感觉?呵呵,所以,以后说不定.net,Android,java,blackberry,最终都成为一致的API,当然,这只是我们的期望,这样大家不必整天花这么多时间学这些无聊的接口了。
关于如何正确编写Android 代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
数据
方式
代码
内容
数据库
文件
标识
一致
无聊
说不定
参数
只是
天花
感觉
接口
提供者
文章
时间
更多
用者
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql数据库求和
医院网络安全经费保障机制
上海计算机软件开发服务费
软件开发需要下载什么
江苏电商软件开发费用是多少
镜像的两个数据库都正在恢复中
网络安全第40条
怎么学access数据库
jdbc经常断开数据库
知网查论文查哪些数据库
长沙软件开发学校排
大数据互联网科技范儿
软件开发中用户代表的作用
冯勇伟网络安全
国内做数据库安全的公司
人工智能和数据库哪个前景好
上海软件开发工程师收入
ios15更新连接服务器出错
山西电商软件开发应用
本机的数据库为什么要配127
客户关系管理软件开发公司
吉安软件开发制作
个人电脑搭建手游游戏服务器
渤海智融天津互联网科技公司
django 服务器管理
pdb数据库批量下载
网络安全责任制督查
传统软件开发 现代软件开发
销售分布式实时数据库哪家好
互联网科技巨头概念股有几个