温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何正确编写Android 代码

发布时间:2021-11-11 16:05:48 来源:亿速云 阅读:146 作者:柒染 栏目:移动开发

这篇文章将为大家详细讲解有关如何正确编写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  <provider android:label="test_provider" android:authorities="com.my.provider" android:name="TestProvider">     </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 代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI