问题描述
我编程一个应用程序,需要做一个操作,高CPU使用率在较长的时间
操作startet像服务但Android系统杀死由于CPU占用率过高的应用程序
让我能做些什么来减少CPU的使用情况如何?,使系统无法停止我的服务?
服务:
进口java.io.BufferedWriter中;
进口的java.io.File;
进口java.io.FileWriter;
进口android.app.Service;
进口android.content.ContentResolver;
进口android.content.Intent;
进口android.database.Cursor;
进口android.os.IBinder;
进口android.provider.ContactsContract;
公共类backup_service延伸服务{
INT I;
INT I2;
@覆盖
公共无效的onCreate(){
尝试
{
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs / dialog.db);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(上);
//关闭输出流
out.close();
备份();
}
赶上(例外X)
{
stopSelf();
}
}
@覆盖
公共无效的onDestroy(){
util.deleteDir(新文件(/数据/数据/ contact.backup.alexander.fuchs / dialog.db));
stopSelf();
}
@覆盖
公众的IBinder onBind(意向为arg0){
// TODO自动生成方法存根
返回null;
}
公共无效的备份()
{
util.deleteDir(新文件(/数据/数据/ contact.backup.alexander.fuchs /备份/));
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/)mkdirs()。
// 得到它
ContentResolver的CR = getContentResolver();
光标CUR = cr.query(ContactsContract.Contacts.CONTENT_URI,
NULL,NULL,NULL,NULL);
如果(cur.getCount()大于0){
I = 0;
I2 = 0;
而(cur.moveToNext()){
字符串ID = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts._ID));
字符串名称= cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// 写
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ id.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(ID);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ name.txt);
OUT =新的BufferedWriter(fstream的);
out.write(名称);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
如果(的Integer.parseInt(cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))> 0){
光标pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
空值,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +=?,
新的String [] {ID},NULL);
而(pCur.moveToNext()){
串号= pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ number.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(数);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
pCur.close();
光标emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
空值,
ContactsContract.CommonDataKinds.Email.CONTACT_ID +=?,
新的String [] {ID},NULL);
而(emailCur.moveToNext()){
//这将让你获得多个电子邮件地址
//如果电子邮件地址被存储在一个阵列
字符串email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
字符串emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ email.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(电子邮件);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ email_type.txt);
OUT =新的BufferedWriter(fstream的);
out.write(emailType);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
emailCur.close();
字符串noteWhere = ContactsContract.Data.CONTACT_ID +=和+ ContactsContract.Data.MIMETYPE +=;
的String [] noteWhereParams =新的String [] {ID,
ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
光标noteCur = cr.query(ContactsContract.Data.CONTENT_URI,空,noteWhere,noteWhereParams,NULL);
如果(noteCur.moveToFirst()){
字符串注= noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
// 写
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ note.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(注);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
noteCur.close();
字符串addrWhere = ContactsContract.Data.CONTACT_ID +=和+ ContactsContract.Data.MIMETYPE +=;
的String [] addrWhereParams =新的String [] {ID,
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
光标addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
NULL,NULL,NULL,NULL);
而(addrCur.moveToNext()){
字符串邮政信箱= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
串街道= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
字符串的城市= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
字符串状态= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
字符串邮政code = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POST code));
字符串全国= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
字符串类型= addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
// 写
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ pobox.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(POBOX);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ street.txt);
OUT =新的BufferedWriter(fstream的);
out.write(街道);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ city.txt);
OUT =新的BufferedWriter(fstream的);
out.write(市);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ state.txt);
OUT =新的BufferedWriter(fstream的);
out.write(州);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(我)+/邮递code.txt);
OUT =新的BufferedWriter(fstream的);
out.write(邮政code);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ COUNTRY.TXT);
OUT =新的BufferedWriter(fstream的);
out.write(国家);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+addres_type.txt);
OUT =新的BufferedWriter(fstream的);
out.write(类型);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
addrCur.close();
字符串imWhere = ContactsContract.Data.CONTACT_ID +=和+ ContactsContract.Data.MIMETYPE +=;
的String [] imWhereParams =新的String [] {ID,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
光标imCur = cr.query(ContactsContract.Data.CONTENT_URI,
空,imWhere,imWhereParams,NULL);
如果(imCur.moveToFirst()){
字符串imName = imCur.getString(
imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
字符串imType;
imType = imCur.getString(
imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
//写
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ im.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(imName);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ im_type.txt);
OUT =新的BufferedWriter(fstream的);
out.write(imType);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
imCur.close();
字符串orgWhere = ContactsContract.Data.CONTACT_ID +=和+ ContactsContract.Data.MIMETYPE +=;
的String [] orgWhereParams =新的String [] {ID,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
光标orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
空,orgWhere,orgWhereParams,NULL);
如果(orgCur.moveToFirst()){
字符串ORGNAME = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
字符串标题= orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
字符串公司= orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.COMPANY));
串部门= orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DEPARTMENT));
//写
尝试
{
新的文件(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(I))mkdirs();
FileWriter的fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ orgName.txt);
BufferedWriter将出=新的BufferedWriter(fstream的);
out.write(ORGNAME);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ title.txt);
OUT =新的BufferedWriter(fstream的);
out.write(职称);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ company.txt);
OUT =新的BufferedWriter(fstream的);
out.write(公司);
//关闭输出流
out.close();
fstream的=新的FileWriter(/数据/数据/ contact.backup.alexander.fuchs /备份/+将String.valueOf(ⅰ)+/ department.txt);
OUT =新的BufferedWriter(fstream的);
out.write(部门);
//关闭输出流
out.close();
}
赶上(例外X)
{
}
}
orgCur.close();
}
我++;
}
的onDestroy();
}
}
}
您可以尝试划分操作成小块,地点视频下载()
的时间很短。如果这还不够,尝试改变一些code到循环是这样的:
旧code:
object.move(1000);
新的code:
的for(int i = 0; I< 100;我++){
object.move(10);
视频下载(10);
}
如果这个例子移动()
操作需要更多的时间,如果给定参数越高,老code可能会导致你的程序不响应。新的code将使机器人的comunicate与您的程序在视频下载()
,让您的应用程序768,16不能停下来了。
@edit正如我可以在你的code见 - 你有几个while循环。尝试将视频下载(10)在他们里面。
I am programming a app that has to do a operation with high cpu usage on a longer time
the operation is startet like a servicebut the android system kills the app because of the high cpu usage
so what can I do to reduce the cpu usage ?and make the system not to stop my service ?
service :
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.os.IBinder;
import android.provider.ContactsContract;
public class backup_service extends Service {
int i;
int i2;
@Override
public void onCreate() {
try
{
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/dialog.db");
BufferedWriter out = new BufferedWriter(fstream);
out.write("on");
//Close the output stream
out.close();
backup();
}
catch (Exception x)
{
stopSelf();
}
}
@Override
public void onDestroy() {
util.deleteDir(new File("/data/data/contact.backup.alexander.fuchs/dialog.db"));
stopSelf();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void backup()
{
util.deleteDir(new File("/data/data/contact.backup.alexander.fuchs/backup/"));
new File("/data/data/contact.backup.alexander.fuchs/backup/").mkdirs();
// get it
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
i = 0;
i2 = 0;
while (cur.moveToNext()) {
String id = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
// write
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/id.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(id);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/name.txt");
out = new BufferedWriter(fstream);
out.write(name);
//Close the output stream
out.close();
}
catch (Exception x)
{
}
if (Integer.parseInt(cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String number = pCur.getString(
pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/number.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(number);
//Close the output stream
out.close();
}
catch(Exception x)
{
}
}
pCur.close();
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
String email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/email.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(email);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/email_type.txt");
out = new BufferedWriter(fstream);
out.write(emailType);
//Close the output stream
out.close();
}
catch(Exception x)
{
}
}
emailCur.close();
String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] noteWhereParams = new String[]{id,
ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
if (noteCur.moveToFirst()) {
String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
// write
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/note.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(note);
//Close the output stream
out.close();
}
catch (Exception x)
{
}
}
noteCur.close();
String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] addrWhereParams = new String[]{id,
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
null, null, null, null);
while(addrCur.moveToNext()) {
String poBox = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
String street = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
String city = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
String state = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
String postalCode = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
String country = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
String type = addrCur.getString(
addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
// write
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/pobox.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(poBox);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/street.txt");
out = new BufferedWriter(fstream);
out.write(street);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/city.txt");
out = new BufferedWriter(fstream);
out.write(city);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/state.txt");
out = new BufferedWriter(fstream);
out.write(state);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/postalcode.txt");
out = new BufferedWriter(fstream);
out.write(postalCode);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/country.txt");
out = new BufferedWriter(fstream);
out.write(country);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"addres_type.txt");
out = new BufferedWriter(fstream);
out.write(type);
//Close the output stream
out.close();
}
catch (Exception x)
{
}
}
addrCur.close();
String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] imWhereParams = new String[]{id,
ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,
null, imWhere, imWhereParams, null);
if (imCur.moveToFirst()) {
String imName = imCur.getString(
imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
String imType;
imType = imCur.getString(
imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
//write
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/im.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(imName);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/im_type.txt");
out = new BufferedWriter(fstream);
out.write(imType);
//Close the output stream
out.close();
}
catch(Exception x)
{
}
}
imCur.close();
String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
String[] orgWhereParams = new String[]{id,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
null, orgWhere, orgWhereParams, null);
if (orgCur.moveToFirst()) {
String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
String company = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.COMPANY));
String department = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DEPARTMENT));
//write
try
{
new File("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)).mkdirs();
FileWriter fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/orgName.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(orgName);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/title.txt");
out = new BufferedWriter(fstream);
out.write(title);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/company.txt");
out = new BufferedWriter(fstream);
out.write(company);
//Close the output stream
out.close();
fstream = new FileWriter("/data/data/contact.backup.alexander.fuchs/backup/"+String.valueOf(i)+"/department.txt");
out = new BufferedWriter(fstream);
out.write(department);
//Close the output stream
out.close();
}
catch(Exception x)
{
}
}
orgCur.close();
}
i++;
}
onDestroy();
}
}
}
You can try divide the operation into smaller pieces and place Thread.sleep()
for a short time. If that's not enough try changing some code into loop like this:
Old code:
object.move(1000);
New code:
for (int i=0; i<100; i++) {
object.move(10);
Thread.sleep(10);
}
If the example move()
operation takes more time if the given parameter is higher, the old code can cause your program non-responding. The new code will allow android to comunicate with your program during Thread.sleep()
, so your app shoud not stop working.
@editAs I can see in your code - you do have several while loops. Try placing Thread.sleep(10) inside them.
这篇关于Android应用程序的高CPU使用率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!