Thứ Sáu, 5 tháng 10, 2018

Android - Bộ nhớ trong

Học lập trình Android cung cấp nhiều loại bộ nhớ cho các ứng dụng để lưu trữ dữ liệu của chúng. Các địa điểm lưu trữ này là các tùy chọn được chia sẻ, bộ nhớ trong và bộ nhớ ngoài, lưu trữ SQLite và lưu trữ qua kết nối mạng.

Trong chương này chúng ta sẽ xem xét bộ nhớ trong. Bộ nhớ trong là lưu trữ dữ liệu riêng tư trên bộ nhớ thiết bị.

Theo mặc định, các tệp này là riêng tư và chỉ được truy cập bởi ứng dụng của bạn và bị xóa khi người dùng xóa ứng dụng của bạn.

Viết tệp

Để sử dụng bộ nhớ trong để ghi một số dữ liệu trong tệp, hãy gọi phương thức openFileOutput () với tên của tệp và chế độ. Các chế độ có thể được tư nhân, công cộng vv Cú pháp của nó được đưa ra dưới đây
FileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);
Phương thức openFileOutput () trả về một thể hiện của FileOutputStream. Vì vậy, bạn nhận được nó trong đối tượng của FileInputStream.

Sau đó, bạn có thể gọi phương thức ghi để ghi dữ liệu trên tệp. Cú pháp của nó được đưa ra dưới đây
String str = "data";
fOut.write(str.getBytes());
fOut.close();

Đọc tệp

Để đọc từ tệp bạn vừa tạo, hãy gọi phương thức openFileInput () với tên của tệp. Nó trả về một thể hiện của FileInputStream. Cú pháp của nó được đưa ra dưới đây
FileInputStream fin = openFileInput(file);
Sau đó, bạn có thể gọi phương thức đọc để đọc một ký tự cùng một lúc từ tệp và sau đó bạn có thể in nó. Cú pháp của nó được đưa ra dưới đây
int c;
String temp="";
while( (c = fin.read()) != -1){
   temp = temp + Character.toString((char)c);
}

//string temp contains all the data of the file.
fin.close();
Ngoài các phương thức viết và đóng, còn có các phương thức khác được cung cấp bởi lớp FileOutputStream để viết các tệp tin tốt hơn. Những phương pháp này được liệt kê dưới đây

Sr.NoPhương pháp & mô tả
1FileOutputStream (Tệp tệp, nối thêm boolean)

Phương thức này xây dựng một FileOutputStream mới ghi vào tệp.
2getChannel ()

Phương thức này trả về một FileChannel chỉ ghi chia sẻ vị trí của nó với luồng này
3getFD ()

Phương thức này trả về bộ mô tả tệp cơ bản
4ghi bộ đệm (byte [], int byteOffset, int byteCount)

Phương thức này Ghi số byte từ bộ đệm mảng byte bắt đầu tại vị trí bù đắp cho luồng này
Ngoài các phương thức đọc và đóng, còn có các phương thức khác được cung cấp bởi lớp FileInputStream để đọc các tệp tốt hơn. Những phương pháp này được liệt kê dưới đây

Sr.NoPhương pháp & mô tả
1khả dụng ()
Phương thức này trả về số byte ước tính có thể đọc hoặc bỏ qua mà không bị chặn để nhập thêm
2getChannel ()

Phương thức này trả về một FileChannel chỉ đọc chia sẻ vị trí của nó với luồng này
3getFD ()

Phương thức này trả về bộ mô tả tệp cơ bản
4đọc (byte [] đệm, int byteOffset, int byteCount)

Phương thức này đọc ở hầu hết các byte có độ dài từ luồng này và lưu trữ chúng trong mảng byte b bắt đầu tại offset

Thí dụ

Dưới đây là ví dụ minh họa việc sử dụng bộ nhớ trong để lưu trữ và đọc tệp. Nó tạo ra một ứng dụng lưu trữ cơ bản cho phép bạn đọc và ghi từ bộ nhớ trong.

Để thử nghiệm với ví dụ này, bạn có thể chạy nó trên một thiết bị thực tế hoặc trong một trình giả lập.

Các bướcSự miêu tả
1Bạn sẽ sử dụng Android Studio IDE để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication.
2Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết.
3Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng
4Chạy ứng dụng và chọn thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả
Sau đây là nội dung của tệp hoạt động chính đã sửa đổi src / MainActivity.java .
package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity extends Activity  {
   Button b1,b2;
   TextView tv;
   EditText ed1;

   String data;
   private String file = "mydata";

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1=(Button)findViewById(R.id.button);
      b2=(Button)findViewById(R.id.button2);

      ed1=(EditText)findViewById(R.id.editText);
      tv=(TextView)findViewById(R.id.textView2);
      b1.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            data=ed1.getText().toString();
            try {
               FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
               fOut.write(data.getBytes());
               fOut.close();
               Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
            }
            catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         
         @Override
         public void onClick(View v) {
            try {
               FileInputStream fin = openFileInput(file);
               int c;
               String temp="";
               while( (c = fin.read()) != -1){
                  temp = temp + Character.toString((char)c);
               }
               tv.setText(temp);
               Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
            }
            catch(Exception e){
            }
         }
      });
   }
}
Sau đây là nội dung sửa đổi của xml res / layout / activity_main.xml .
Trong đoạn mã sau abc cho biết logo của tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
      
   <TextView android:text="Internal storage" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
   
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save"
      android:id="@+id/button"
      android:layout_alignParentBottom="true"
      android:layout_alignLeft="@+id/textView"
      android:layout_alignStart="@+id/textView" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Enter Text"
      android:focusable="true"
      android:textColorHighlight="#ff7eff15"
      android:textColorHint="#ffff25e6"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:layout_marginTop="42dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="load"
      android:id="@+id/button2"
      android:layout_alignTop="@+id/button"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Read"
      android:id="@+id/textView2"
      android:layout_below="@+id/editText"
      android:layout_toLeftOf="@+id/button2"
      android:layout_toStartOf="@+id/button2"
      android:textColor="#ff5bff1f"
      android:textSize="25dp" />
      
</RelativeLayout>
Sau đây là nội dung của res / values ​​/ string.xml .
<resources>
   <string name="app_name">My Application</string>
</resources>
Sau đây là nội dung của tệp AndroidManifest.xml .
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>
Hãy thử chạy ứng dụng Lưu trữ của chúng tôi, chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường.

Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.

Android studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
Học lập trình Android
Bây giờ những gì bạn cần làm là nhập bất kỳ văn bản nào trong trường. Ví dụ, tôi đã nhập một số văn bản. Nhấn nút lưu. Thông báo sau sẽ xuất hiện trong bạn AVD

Bây giờ khi bạn nhấn nút tải, ứng dụng sẽ đọc tệp và hiển thị dữ liệu. Trong trường hợp của chúng tôi, dữ liệu sau sẽ được trả về

Lưu ý rằng bạn thực sự có thể xem tệp này bằng cách chuyển sang tab DDMS. Trong DDMS, chọn tệp explorer và điều hướng đường dẫn này.

tools>android>android device Monitor

Điều này cũng đã được thể hiện trong hình dưới đây.

Học lập trình Android
Học lập trình Android

Không có nhận xét nào:

Đăng nhận xét

Lập trình Android - RenderScript

Trong chương này, chúng ta sẽ tìm hiểu về Android RenderScript. Thông thường các ứng dụng trên Android được thiết kế để tiêu thụ tài nguyên ...