gpt4 book ai didi

android - 我应该如何实现此辅助线程以避免错误? (Android)

转载 作者:行者123 更新时间:2023-12-03 08:31:04 26 4
gpt4 key购买 nike

我在我的Android应用中实现了一个初始屏幕,其中:

  • 从服务器
  • 下载sqlite数据库
  • 加载URL以获取JSON
  • 在设备中创建一个sqlite数据库并执行几个查询

  • 我正在使用AsyncTask来做所有事情,如果用户在过程中关闭应用程序或关闭设备,因为该应用程序将导致我的问题发生:
  • 可能正在创建数据库或在设备
  • 中执行关键查询
  • 可能正在从服务器
  • 下载sqlite数据库
  • 可能正在运行几个重要的过程

  • 绝对,整个过程(3-5秒)很重要。

    所以...我该如何避免呢?我是否应该使用处理程序,加载程序,on-(暂停,停止,销毁)方法以达到目标?你可以给我一个例子吗?

    最佳答案

    如上面的评论中所述,您应该使用服务,因为它们的生命周期与 Activity 的生命周期是分开的。

    像这样创建服务:

    public class MyService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    // Do everything you need to here, then call stop:
    Log.d("DEBUG", "Started...");

    stopSelf();
    return super.onStartCommand(intent, flags, startId);
    }


    @Override
    public void onDestroy() {
    Intent intent = new Intent("com.example.androidexample.SERVICE_STOPPING");
    sendBroadcast(intent);
    super.onDestroy();
    }

    }

    然后在 Activity 中:
    public class MainActivity extends Activity {

    private ServiceCompleteReceiver receiver;


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

    receiver = new ServiceCompleteReceiver();
    filter = new IntentFilter("com.example.androidexample.SERVICE_STOPPING");
    startService(new Intent(this, MyService.class));
    registerReceiver(receiver, filter);
    }


    public class ServiceCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    // Do whatever needs to be done here

    unregisterReceiver(receiver);
    }

    }

    }

    编辑:

    别忘了也将其添加到 list 中
       <service
    android:name="com.example.androidexample.MyService"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    </service>

    关于android - 我应该如何实现此辅助线程以避免错误? (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23858201/

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