gpt4 book ai didi

java - 如何制作一个不干扰Activity的正在运行的服务?

转载 作者:行者123 更新时间:2023-12-01 15:45:11 25 4
gpt4 key购买 nike

我有一个名为wipeScreen.java的 Activity

此 Activity 运行一个wipeService.java,用于删除Android手机上的短信和联系人。当wipeService运行时,我的wipeScreen Activity 卡住并且无法使用,只显示黑屏,甚至给我一些“强制关闭”的长时间等待时间..

有谁知道如何创建一个可以自主工作且不干扰 Activity 的服务,以便在服务运行时 Activity 仍然可以使用?

这是我的删除屏幕触发代码:

SPWipe = getSharedPreferences("wipe", 0);
editorSPWipe = SPWipe.edit();
editorSPWipe.putString("wipe", "yes");
editorSPWipe.commit();

intent myIntent = new Intent(ListenSMSservice.this,WipeScreenForm.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(myIntent);

这是我的删除屏幕代码:

        SPtempWipe = getSharedPreferences("wipe", 0);
if (SPtempWipe.getString("wipe","").equalsIgnoreCase("yes"))
{
startService(new Intent(LockScreenForm.this, WipeService.class));
SPWipe = getSharedPreferences("wipe", 0);
editorSPWipe = SPWipe.edit();
editorSPWipe.putString("wipe", "no");
editorSPWipe.commit();
}

这是我的wipeService代码:

@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();

wipeSMS();
wipeContact();
stopService(new Intent(this, WipeService.class));
}


public void wipeSMS()
{
Uri uri = Uri.parse("content://sms");
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(uri, null, null, null,
null);

while (cursor.moveToNext()) {
try {
long thread_id = cursor.getLong(1);
Uri thread = Uri.parse("content://sms/conversations/"
+ thread_id);
getContentResolver().delete(thread, null, null);
} catch (Exception e) {
// TODO: handle exception
}
}
}

public void wipeContact() {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
while (cur.moveToNext()) {
try{
String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
System.out.println("The uri is " + uri.toString());
cr.delete(uri, null, null);
}
catch(Exception e)
{
//System.out.println(e.getStackTrace());
}
}
}

当服务开始删除我的联系人时,wipeScreen Activity 被卡住且无法使用。请帮助我在不干扰wipeScreen Activity 的情况下启动此服务。谢谢。

最佳答案

我认为你可以使用 IntentService在单独的线程中运行代码

关于java - 如何制作一个不干扰Activity的正在运行的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com